rigidbody rotation in NPT

Dear lammps users,

Currently, I’m working on finding equilibrium state for Na-montmorillonite clay layers.
The model consists of two rigid clay plates and Na+ ions between the gallery.
The bottom layer is fixed during simulation, and the upper layer is only allowed to move by z-direction.
Both layers should not rotate during simulation, so I used fix rigid/nvt with force and torque off options.

The first run was performed for 2ns with NVT, and it succefully reached at equilibrium without unexpected translation or rotation.
However, when this simulation continues with NPT, the upperlayer suddenly rotates even though its force and torque off.

So, anyone please tell me why this happens and how can I prevent this rotation with NPT?
I tried it with zeroing angle mometum or angle velocity but it still rotates.

By the way, fix rigid/nvt for rigid bodies and NPT with dilate partial option for Na ions are used simultaneously during NPT simulation since there’s no rigid/npt command.
Does this make trouble?

For your information,
I copied and pasted the input file below.

Thank you in advance.

Joon

units real
atom_style full
boundary p p p

bond_style harmonic
angle_style harmonic
pair_style lj/cut/coul/long 10.5
pair_modify shift yes
kspace_style ewald 1.0e-3

#read_data NaMMT.lmp
read_restart 2000000

group doublelayers molecule 1 2
group lowerlayer molecule 1
group upperlayer molecule 2
group polymers type 5
group Na type 4

fix 1 polymers npt temp 300.0 300.0 100.0 iso 1.0 1.0 10000.0 dilate partial
fix 2 lowerlayer rigid/nvt single temp 300.0 300.0 100.0 torque * off off off force * off off off
fix 3 upperlayer rigid/nvt single temp 300.0 300.0 100.0 torque * off off off force * off off on
fix 4 upperlayer setforce 0.0 0.0 NULL
fix 5 lowerlayer setforce 0.0 0.0 0.0
fix 6 Na npt temp 300.0 300.0 100.0 iso 1.0 1.0 10000.0 dilate partial
fix 7 Na setforce 0.0 0.0 NULL

neighbor 2.0 bin
neigh_modify every 2 delay 10

timestep 1
thermo 100
thermo_style custom step atoms temp vol press pe ke etotal evdwl ecoul elong ebond eangle edihed epair fmax xlo xhi ylo yhi zlo zhi
thermo_modify lost warn line one
dump 1 all custom 1000 NaMMT.lammpstrj id type x y z
dump 2 all dcd 1000 NaMMT.dcd

run 1000000
write_restart *

Are you getting a warning that you are integrating any atoms twice?
That would be bad. You can monitor the force and torque
on the rigid bodies by output of the fix rigid command, and on
individual atoms by the dump command. I would look at those
to try to figure out what is going on.

Steve

Dear Steve,

Thank you for your reply.
No warnings come up during simulation.
Each atom is intergrating only once (NVT for rigid bodies, and NPT for Na+ ions).

Joon

You can look at the force/torque on each rigid body via the output
of the fix rigid command. They debug with a simple system to
see if you have excluded the right terms (also an option with fix rigid),
and that the dynamics of each rigid body is what you expect.

Steve