I want to apply a radial pressure on CNT; therefore, I want to specify the
CNT atoms in four group according their coordinates
group 1 x>0 & y>0,
group 2 x<0 & y>0,
group 3 x<0 & y<0,
group 4 x<0 & y>0
then I want to use displacement_atoms command for each group. As:
displace_atoms 1 move -0.01*cos(theta) -0.01*sin(theta) 0 units box
displace_atoms 2 move -0.01*cos(theta) +0.01*sin(theta) 0 units box
displace_atoms 3 move +0.01*cos(theta) +0.01*sin(theta) 0 units box
displace_atoms 4 move -0.01*cos(theta) +0.01*sin(theta) 0 units box
Since during simulation, the coordinates of atoms are modified, I want to
use "If command" to specify displacement_atoms command according to the new
coordinates of atoms. As:
If x>0 && y>0 then displace_atoms all move -0.01*cos(theta)
-0.01*sin(theta) 0 units box
I don't know, it is possible or not.
you can achieve the effect you are looking for, but - as i suspected -
your understanding of how scripting in LAMMPS works is *very* wrong.
it cannot work the way you are formulating it. you are trying to
"describe" your problem to the computer in the same way, as you would
explain it to another human, assuming the other person will use common
sense to do things properly. computers don't work this way. you have
to be *extremely* precise and use the available instructions only
within the confines of the syntax and semantics described in the
documentation. a computer will only do *exactly* what you tell it, but
since computer program have no common sense, you have to express
yourself precisely in the terms of the computer program, not your own.
you cannot just shove some expressions in the face of the computer and
expect it to do what you want. in the case of above, there are 3 major
issues. 1) you use expressions, where only numbers of variable
references are allowed, 2) your expressions reference an entity
"theta" that is not defined anywhere, and 3) your if statement makes
assumptions about how the "if" and the "displace_atoms" commands work,
that are in conflict with how they are documented.
you are obviously trying something that is too complex for your level
of understanding of programming in general and LAMMPS in particular.
you need to approach this in stages and teach yourself the necessary
skills step by step. we cannot do this on the mailing list. talk to
your adviser, that is the person tasked with training you!
actually, to do a radial compression, you have can define a suitable
atom style variable, where each atom's position is used to determine
a velocity that can be fed to a fix move command via the variable
command. this will then continually shrink your CNT over the course of
your trajectory. if you place your CNT centered on the z axis, those
are trivial to compute. if not, you have to compensate for that. this
is all rather simple spatial geometry and some middle school level
vector algebra.
again, discuss with your adviser and your colleagues and try solving
and understanding some simpler problems first.
axel.