srd big particle interaction

Dear All,

As per the manual, “Collisions between SRD particles and big particles or walls are modeled as a lightweight SRD point particle hitting a heavy big particle of given diameter or a wall at a point on its surface and bouncing off with a new velocity.”

The manual also talks about srd particles entering the big particles with diameter D.

My question is, How and why the srd particles enter the big particles, when they are supposed to bounce off from the big particle surface ?

This seems to be ok, if we have a periodic system.
But if we have a non periodic system bounded by atomistic walls, then once these srd particles enter the big particles, they can leave from the other side of the wall. Which means the srd particles can pass through the wall …

Is there way where srd particles strictly bounce off from the surface of big particles and can never enter inside them.

  1. When calculating the viscosity of srd solvent, we need the total volume occupied by the srd particles, which is calculated from volsrd = (domain->xprd * domain->yprd * domain->zprd) - volbig;

So from the total volume we are subtracting the big particles volume.

Now let say, my simulation box size is 101010, so the total volume is 1000.

If I construct a high dense wall with 1000 atoms inside the box with each atom radius 1.0, then the big particles volume is 1000*(4/3)pir^3, which is more than the actual volume of the box.

I know, 101010 box can’t contain 1000 big atoms each with radius 1.0 (unrealistic), but the earlier suggestions from the mailing list are to create a high dense wall so that srd particles don’t pass through the wall.

Any suggestions please …

Thank you.

Comments below.


Thank you Steve,

My systems is a cylindrical nanopore with planar walls at both ends, like a membrane. So, I can’t use fix wall/srd.

Occasionally that logic can fail, and hence there is an “inside” keyword for options of how to treat the particle when it remains inside a big particle for another step.

Can we/I do something so that the SRD particles strictly bounce off the big particles and never enter inside them, with the logic never fails.


Do you mean fix wall/srd can’t do the planar end walls (why not), or that
you want to model the cylindrical nanopore as a curved wall?

Can we/I do something so that the SRD particles strictly bounce off the big particles and never >enter inside them, with the logic never fails.

If you draw a bunch of overlapping spheres and shoot a small particle at them,
after the first bounce it can end up inside several particles. That confuses the SRD
algorithm which is simply trying to push the particle outside the sphere. You’re
welcome to implement a true ray-tracing algorithm, but it will be more complex
and more expensive. I think what you are trying to do is fundamentally a bad
way to make an SRD wall. You could try making a fix/wall version that worked
for cylindrical walls if that’s what you want.


Hi Steve,

I know that we can use fix wall/srd command to create a planar wall. But in my case the cylindrical pore separate the solvent into two reservoirs by using the two planar walls attached to both ends of the cylinder. I have attached the image, where I want to use srd solvent instead of water. So the planar walls need to have a hole with diameter equal to the cylindrical pore diameter. The current fix wall/srd command can’t handle a hole on the wall.

In your recent paper, No-slip boundary conditions and forced flow in multiparticle collision dynamics, PHYSICAL REVIEW E 86, 066703 (2012), in section-C, equation-17, you have talked about the problem of srd-big particle collisions (during the streaming step some MPCD particles will penetrate the surface of solid objects). In such a case, one solution proposed is to reverse the srd particle velocity, equation 17. If I understand it correctly, then the srd particles can never enter the big particles. Am I right ? If so, you must have used a modified version of the fix_srd.cpp code, not the one distributed with current lammps.



The paper is referring to doing a mixture simulation where you have
a small # of big particles in a background solvent of SRD particles.
Then the big particles do not overlap. The way the code insures
no SRD particles “enter” a big particle is what I said before. It
does not ray-trace the path of each SRD particle (expensive).
Instead it simply detects at the end of the step if an SRD particle
is inside a big particle. If so it pushes it back outside.

The problem with doing this for a wall of big particles is that you
have to overlap them. That can make the algorithm break down.
In the fluid case it is not a big deal if an occasional
SRD particle stays inside a big particle for a couple steps
until it pops out the other side. But that’s not acceptable
for a wall.

You might try overlapping your wall particles the minimal amount
to prevent holes. I seem to recall you overlapped them much more.
With few overlaps the current algorithm might work OK.

Or you could modify fix wall/srd to allow for a hole.


Thanks Steve,

At the moment I am thinking of a hypothetical wall (with out any actual atoms), and when the srd particles try to cross the wall, I simply reverse their velocity, so that they can never escape the membrane boundary.

This way the momentum is not conserved, but it can seen as a very small srd particles getting reflected from a heavy mass wall atoms.

Hope it make sense.

I will let you know how it goes …

Thank you very much.

That’s what fix wall/srd does, but just for flat walls currently.