It's true, the immobile atoms do not move, but the pressure regulation fails.
I've attached three jpeg images that show what happens in my system:
The box expands indefinitely. (Using "neigh_modify exclude immobile
immobile" slows the expansion, but does not stop it.)
All of these systems were equilibrated at 1atm of pressure
beforehand. They should not be expanding.
---- Here is my attempt to explain this behavior: ----
In order to maintain a liquid at constant pressure (using "dilate
partial") in the presence of rigid or immobilized objects, the forces
which act on the rigid/immobile atoms should be excluded from the
virial (in theory). If I understand correctly, then unless the user
explicitly tells lammps not to calculate these forces, they will be
included in the virial. These extra forces cause lammps to think the
pressure of the liquid is too high, so lammps keeps trying to expand
the box to relieve pressure within the liquid.
Presumably using "neighmodify exclude immobile immobile" eliminates
the forces between immobile atoms (and their contributions to the
virial), which helps, but this does not turn off the mobile-immobile
interactions. (Turning those off is a bad idea too.)
The combination of "fix npt ...dilate partial", "fix rigid" and
"neigh_modify exclude" appears to work, but I would love to hear from
Aiden or Trung, or anyone else who disagrees with this statement.
Edit:
(Trung's post shows it is not necessary to use "fix rigid" to avoid
exploding simulation boxes.)
Thanks for the feedback. If I have any more examples, I'll post
them in this thread.
Cheers
Andrew
The new input scripts I used to make these pictures are included.
Feel free to ignore them. The data files are the same ones I posted
yesterday, although I'm happy to repost them. I can also post the
results I obtained when turning off "fix shake". (Although this does
not solve the problem.)
nptdilatepartial.in (4.03 KB)
nptdilatepartial+neighexclude.in (3.97 KB)