[lammps-users] How to use LAMMPS to simulate particles' adsorption on a free surface?

Dear LAMMPS users,

I have a question concerning MD simulations about particles'
adsorption on a free surface(i.e. a plane).

In the simulation box, there are periodic boundary conditions in x-y
plane. And in z direction, I want to put one wall at z=0, and use a
pressure at the top of the simulation box(z direction) to constrain
the particles in the box. The idea is just like that in grand canonian
Monte Carlo simulation that we use chemical potential to control the
number of particles in box. Chemical potential is the same as
pressure. Here I want to use a pressure at the top of simulation box
to control the size of box(like NPT simulation to some extent), which
means that the pressure represents the effect from the bulk
concentration of the particles. If the bulk concentration is large,
the pressure at the top of simulation will increase as well to reduce
the size of box in order to increase the concentration of particles in
simulation box.

I wonder how to do this? and can it be done by using LAMMPS?

Many thanks for your attention!

With best regards,



If I'm understanding you correctly, you want to do a simulation with
PBC in the x- and y-directions, and non-periodic with walls in the
z-direction. This is certainly possible with LAMMPS. In addition,
you'd like the upper wall to move up and down in response to the
pressure it feels. This is probably not currently possible with LAMMPS
without creating your own special-purpose fix. But I see no reason why
it wouldn't work if you wrote your own fix to do it.

If you do decide to write your own fix to do this kind of simulation,
I'd recommend looking at the following fixes that have aspects of what
you want: deform, npt, and the wall fixes. Also, you might consider
computing the pressure on the wall simply by taking the sum of the
wall-particle forces and dividing by the wall surface area.


If the z direction is periodic then use fix npt or fix press/berendsen
to equilibrate the box size to the pressure in that dim.

If it's non-periodic, you can use fix aveforce to push on the wall
with an appropriate compensating force. See examples/flow/in.flow.poiss
for an example. There's also a movie of it on the Movies part
of the WWW page.