constant surface tension in lammps

Hello everyone

I’m modeling a bi-layer system with vacuum in both sides of it and I need to use NGammaT (constant surface tension) ensemble, since LAMMPS doesn’t have this ensemble I have to use NPT to fix pressure tensor in x and y directions in order to reach the desired surface tension, but according to surface tension relation : gamma=1/2(pzz-1/2(pxx+pyy)) i need to evaluate pzz within simulation to calculate pxx and pyy , so I should change pstart and pfinal constantly! And NPT doesn’t have any option for this. does LAMMPS have another option for this?( I can’t impose any value to my pzz because I need the vacuum upside it)

thanks for the answer

Aidan can maybe comment on this. There is a new fix controller command

he developed that might be usable to adjust the x,y periodic boundaries to target a

desired gamma. Or he can comment on using fix npt for this scenario.


may be you can consider a boundary layer around the bilayer and add a constant force ( addforce ) on the molecules in this layer in the lateral directions. Control the force to get the desired tension. I havent tried this, might work!


You are making this too complicated. If you have vacuum in z, then =0, where <> means MD time average. Hence = -(+)/4. So to achieve a desired , while also ensuring = , you can just run fix npt:

variable pxy equal -gamma/2.0
fix 1 all npt temp $t t {tdamp} x {pxy} {pxy} y {pxy} {pxy}

Even this is perhaps unnecessarily complicated unless you absolutely have to hit a specific value of and you don’t know the corresponding values of lx and ly, or you expect that lx and ly will change over the course of the simulation. In most other cases, it is preferable to fix lx and ly, sample and , and calculate . You just need to make sure that and are close. If not, adjust lx or ly.


If there are no external forces acting on the system in z and the system is in mechanical equilibrium, then ====0.