[lammps-users] fix NPT to achieve specific stress state

Hi everyone,

I am trying to impose normal pressures on each pair of faces of an orthogonal simulation box. The pressures are mutually independent and time variable. My aim is to apply an instantaneous stress state such that the imposed pressures Pxx, Pyy and Pzz are the principal stresses.
Currently lammps can control the normal pressures quite effectively, but the values of Pxy, Pyz and Pxz are far from zero as the box deforms under these imposed normal pressures. Also, I understand that since I defined an orthogonal box, no tilt displacements will be produced.
I am concerned about the physical correctness of the stress state.
In order to have Pxx Pyy and Pzz as the principal stresses, which of these is more correct:

a) fix my_fix npt temp 300 300 1 x 0 100 1 y 0 100 1 z 0 -100 1 drag 2.0 [I'm currently using this]


b) fix my_fix npt temp 300 300 1 x 0 100 1 y 0 100 1 z 0 -100 1 xy 0 0 1 yz 0 0 1 xz 0 0 1 drag 2.0

I'm using lammps_4Jul_10.


If you're using an orthogonal box (not triclinic), you can only
use the 1st command below. You speak of "instantaneous"
but pressure is a (large) fluctuating quantity in an MD simulation.
So what you can hope for is that if you run for a long time (1000s
or more steps) that your system will equilibrate and the
Pxx, Pyy, Pzz will be "on average" what you have specified.
But they won't be the values at any instant. And since you
specified Pxx,Pyy,Pzz as very different than each other, your
physical model may not be able to sustain that stress state.
E.g. a chunk of liquid probably wouldn't. This means there
is no equlibribum config that has those 3 stresses.