[lammps-users] What is the best way to restrain a dihedral angle in lammps?

Dear all,

My question is in the title. I want to restrain a dihedral angle in an molecule and perform
energy minimization. The possibilities I see after studying the document include

1. Use fix rigid to fix the four atoms composing the dihedral angle. This is not good for
my purpose because the bonds and angles among these four atoms are also fix.

2. Use fix spring/self, similar like above, I can use springs to drag atoms back to their
original positions in order to restrain the dihedral angle. The bonds and angles are flexible
but still they cannot be fully optimized depending on the strength of the spring constants.

3. Add a new dihedral potential (as a restraint) for the desired dihedral angle, and monitor
its energy value. After minimization, manually subtract this value from the total energy. This
seems to me the best solution.

I'd like to hear your suggestion about
Is there a better way to do this in lammps?
Is there some unforeseen problem?

Thanks in advance!


You could also set the coeffs for the dihedral in question
(assuming it has a unique type, so that it applies to only
one dihedral) to large values, so that the dihedral "spring"
is effectively stiff - then it will not move much during