forked from lijiext/lammps
330 lines
16 KiB
HTML
330 lines
16 KiB
HTML
<HTML>
|
|
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
|
|
</CENTER>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<HR>
|
|
|
|
<H3>create_atoms command
|
|
</H3>
|
|
<P><B>Syntax:</B>
|
|
</P>
|
|
<PRE>create_atoms type style args keyword values ...
|
|
</PRE>
|
|
<UL><LI>type = atom type (1-Ntypes) of atoms to create (offset for molecule creation)
|
|
|
|
<LI>style = <I>box</I> or <I>region</I> or <I>single</I> or <I>random</I>
|
|
|
|
<PRE> <I>box</I> args = none
|
|
<I>region</I> args = region-ID
|
|
region-ID = particles will only be created if contained in the region
|
|
<I>single</I> args = x y z
|
|
x,y,z = coordinates of a single particle (distance units)
|
|
<I>random</I> args = N seed region-ID
|
|
N = number of particles to create
|
|
seed = random # seed (positive integer)
|
|
region-ID = create atoms within this region, use NULL for entire simulation box
|
|
</PRE>
|
|
<LI>zero or more keyword/value pairs may be appended
|
|
|
|
<LI>keyword = <I>mol</I> or <I>basis</I> or <I>remap</I> or <I>var</I> or <I>set</I> or <I>units</I>
|
|
|
|
<PRE> <I>mol</I> value = template-ID seed
|
|
template-ID = ID of molecule template specified in a separate <A HREF = "molecule.html">molecule</A> command
|
|
seed = random # seed (positive integer)
|
|
<I>basis</I> values = M itype
|
|
M = which basis atom
|
|
itype = atom type (1-N) to assign to this basis atom
|
|
<I>remap</I> value = <I>yes</I> or <I>no</I>
|
|
<I>var</I> value = name = variable name to evaluate for test of atom creation
|
|
<I>set</I> values = dim vname
|
|
dim = <I>x</I> or <I>y</I> or <I>z</I>
|
|
name = name of variable to set with x,y,z atom position
|
|
<I>rotate</I> values = Rx Ry Rz theta
|
|
Rx,Ry,Rz = rotation vector for single molecule
|
|
theta = rotation angle for single molecule (degrees)
|
|
<I>units</I> value = <I>lattice</I> or <I>box</I>
|
|
<I>lattice</I> = the geometry is defined in lattice units
|
|
<I>box</I> = the geometry is defined in simulation box units
|
|
</PRE>
|
|
|
|
</UL>
|
|
<P><B>Examples:</B>
|
|
</P>
|
|
<PRE>create_atoms 1 box
|
|
create_atoms 3 region regsphere basis 2 3
|
|
create_atoms 3 single 0 0 5
|
|
create_atoms 1 box var v set x xpos set y ypos
|
|
</PRE>
|
|
<P><B>Description:</B>
|
|
</P>
|
|
<P>This command creates atoms (or molecules) on a lattice, or a single
|
|
atom (or molecule), or a random collection of atoms (or molecules), as
|
|
an alternative to reading in their coordinates explicitly via a
|
|
<A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A>
|
|
command. A simulation box must already exist, which is typically
|
|
created via the <A HREF = "create_box.html">create_box</A> command. Before using
|
|
this command, a lattice must also be defined using the
|
|
<A HREF = "lattice.html">lattice</A> command, unless you specify the <I>single</I> style
|
|
with units = box or the <I>random</I> style. For the remainder of this doc
|
|
page, a created atom or molecule is referred to as a "particle".
|
|
</P>
|
|
<P>If created particles are individual atoms, they are assigned the
|
|
specified atom <I>type</I>, though this can be altered via the <I>basis</I>
|
|
keyword as discussed below. If molecules are being created, the type
|
|
of each atom in the created molecule is specified in the file read by
|
|
the <A HREF = "molecule.html">molecule</A> command, and those values are added to
|
|
the specified atom <I>type</I>. E.g. if <I>type</I> = 2, and the file specifies
|
|
atom types 1,2,3, then each created molecule will have atom types
|
|
3,4,5.
|
|
</P>
|
|
<P>For the <I>box</I> style, the create_atoms command fills the entire
|
|
simulation box with particles on the lattice. If your simulation box
|
|
is periodic, you should insure its size is a multiple of the lattice
|
|
spacings, to avoid unwanted atom overlaps at the box boundaries. If
|
|
your box is periodic and a multiple of the lattice spacing in a
|
|
particular dimension, LAMMPS is careful to put exactly one particle at
|
|
the boundary (on either side of the box), not zero or two.
|
|
</P>
|
|
<P>For the <I>region</I> style, a geometric volume is filled with particles on
|
|
the lattice. This volume what is inside the simulation box and is
|
|
also consistent with the region volume. See the <A HREF = "region.html">region</A>
|
|
command for details. Note that a region can be specified so that its
|
|
"volume" is either inside or outside a geometric boundary. Also note
|
|
that if your region is the same size as a periodic simulation box (in
|
|
some dimension), LAMMPS does not implement the same logic described
|
|
above as for the <I>box</I> style, to insure exactly one particle at
|
|
periodic boundaries. if this is what you desire, you should either
|
|
use the <I>box</I> style, or tweak the region size to get precisely the
|
|
particles you want.
|
|
</P>
|
|
<P>For the <I>single</I> style, a single particle is added to the system at
|
|
the specified coordinates. This can be useful for debugging purposes
|
|
or to create a tiny system with a handful of particles at specified
|
|
positions.
|
|
</P>
|
|
<P>For the <I>random</I> style, N particles are added to the system at
|
|
randomly generated coordinates, which can be useful for generating an
|
|
amorphous system. The particles are created one by one using the
|
|
speficied random number <I>seed</I>, resulting in the same set of particles
|
|
coordinates, independent of how many processors are being used in the
|
|
simulation. If the <I>region-ID</I> argument is specified as NULL, then
|
|
the created particles will be anywhere in the simulation box. If a
|
|
<I>region-ID</I> is specified, a geometric volume is filled which is both
|
|
inside the simulation box and is also consistent with the region
|
|
volume. See the <A HREF = "region.html">region</A> command for details. Note that
|
|
a region can be specified so that its "volume" is either inside or
|
|
outside a geometric boundary.
|
|
</P>
|
|
<P>IMPORTANT NOTE: Particles generated by the <I>random</I> style will
|
|
typically be highly overlapped which will cause many interatomic
|
|
potentials to compute large energies and forces. Thus you should
|
|
either perform an <A HREF = "minimize.html">energy minimization</A> or run dynamics
|
|
with <A HREF = "fix_nve_limit.html">fix nve/limit</A> to equilibrate such a system,
|
|
before running normal dynamics.
|
|
</P>
|
|
<P>Note that this command adds particles to those that already exist.
|
|
This means it can be used to add particles to a system previously read
|
|
in from a data or restart file. Or the create_atoms command can be
|
|
used multiple times, to add multiple sets of particles to the
|
|
simulation. For example, grain boundaries can be created, by
|
|
interleaving create_atoms with <A HREF = "lattice.html">lattice</A> commands
|
|
specifying different orientations. By using the create_atoms command
|
|
in conjunction with the <A HREF = "delete_atoms.html">delete_atoms</A> command,
|
|
reasonably complex geometries can be created, or a protein can be
|
|
solvated with a surrounding box of water molecules.
|
|
</P>
|
|
<P>In all these cases, care should be taken to insure that new atoms do
|
|
not overlap existing atoms inappropriately, especially if molecules
|
|
are being added. The <A HREF = "delete_atoms.html">delete_atoms</A> command can be
|
|
used to remove overlapping atoms or molecules.
|
|
</P>
|
|
<HR>
|
|
|
|
<P>Individual atoms are inserted by this command, unless the <I>mol</I>
|
|
keyword is used. It specifies a <I>template-ID</I> previously defined
|
|
using the <A HREF = "molecule.html">molecule</A> command, which reads a file that
|
|
defines the molecule. The coordinates, atom types, charges, etc, as
|
|
well as any bond/angle/etc and special neighbor information for the
|
|
molecule can be specified in the molecule file. See the
|
|
<A HREF = "molecule.html">molecule</A> command for details. The only settings
|
|
required to be in this file are the coordinates and types of atoms in
|
|
the molecule.
|
|
</P>
|
|
<P>Using a lattice to add molecules, e.g. via the <I>box</I> or <I>region</I> or
|
|
<I>single</I> styles, is exactly the same as adding atoms on lattice
|
|
points, except that entire molecules are added at each point, i.e. on
|
|
the point defined by each basis atom in the unit cell as it tiles the
|
|
simulation box or region. This is done by placing the geometric
|
|
center of the molecule at the lattice point, and giving the molecule a
|
|
random orientation about the point. The random <I>seed</I> specified with
|
|
the <I>mol</I> keyword is used for this operation, and the random numbers
|
|
generated by each processor are different. This means the coordinates
|
|
of individual atoms (in the molecules) will be different when running
|
|
on different numbers of processors, unlike when atoms are being
|
|
created in parallel.
|
|
</P>
|
|
<P>Also note that because of the random rotations, it may be important to
|
|
use a lattice with a large enough spacing that adjacent molecules will
|
|
not overlap, regardless of their relative orientations.
|
|
</P>
|
|
<P>IMPORTANT NOTE: If the <A HREF = "create_box.html">create_box</A> command is used to
|
|
create the simulation box, followed by the create_atoms command with
|
|
its <I>mol</I> option for adding molecules, then you typically need to use
|
|
the optional keywords allowed by the <A HREF = "create_box.html">create_box</A>
|
|
command for extra bonds (angles,etc) or extra special neighbors. This
|
|
is because by default, the <A HREF = "create_box.html">create_box</A> command sets
|
|
up a non-molecular system which doesn't allow molecules to be added.
|
|
</P>
|
|
<HR>
|
|
|
|
<P>This is the meaning of the other allowed keywords.
|
|
</P>
|
|
<P>The <I>basis</I> keyword is only used when atoms (not molecules) are being
|
|
created. It specifies an atom type that will be assigned to specific
|
|
basis atoms as they are created. See the <A HREF = "lattice.html">lattice</A>
|
|
command for specifics on how basis atoms are defined for the unit cell
|
|
of the lattice. By default, all created atoms are assigned the
|
|
argument <I>type</I> as their atom type.
|
|
</P>
|
|
<P>The <I>remap</I> keyword only applies to the <I>single</I> style. If it is set
|
|
to <I>yes</I>, then if the specified position is outside the simulation
|
|
box, it will mapped back into the box, assuming the relevant
|
|
dimensions are periodic. If it is set to <I>no</I>, no remapping is done
|
|
and no particle is created if its position is outside the box.
|
|
</P>
|
|
<P>The <I>var</I> and <I>set</I> keywords can be used to provide a criterion for
|
|
accepting or rejecting the addition of an individual atom, based on
|
|
its coordinates. The <I>vname</I> specified for the <I>var</I> keyword is the
|
|
name of an <A HREF = "variable.html">equal-style variable</A> which should evaluate
|
|
to a zero or non-zero value based on one or two or three variables
|
|
which will store the x, y, or z coordinates of an atom (one variable
|
|
per coordinate). These other variables must be <A HREF = "variable.html">equal-style
|
|
variables</A> defined in the input script, but their
|
|
formula can by anything. The <I>set</I> keyword is used to identify the
|
|
names of these other variables, one variable for the x-coordinate of a
|
|
created atom, one for y, and one for z.
|
|
</P>
|
|
<P>When an atom is created, its x, y, or z coordinates override the
|
|
formula for any <I>set</I> variable that is defined. The <I>var</I> variable is
|
|
then evaluated. If the returned value is 0.0, the atom is not
|
|
created. If it is non-zero, the atom is created. After all atoms are
|
|
created, the formulas defined for all of the <I>set</I> variables are
|
|
restored to their original strings.
|
|
</P>
|
|
<P>As an example, these commands can be used in a 2d simulation, to
|
|
create a sinusoidal surface. Note that the surface is "rough" due to
|
|
individual lattice points being "above" or "below" the mathematical
|
|
expression for the sinusoidal curve. If a finer lattice were used,
|
|
the sinusoid would appear to be "smoother". Also note the use of the
|
|
"xlat" and "ylat" <A HREF = "thermo_style.html">thermo_style</A> keywords which
|
|
converts lattice spacings to distance. Click on the image for a
|
|
larger version.
|
|
</P>
|
|
<PRE>variable x equal 100
|
|
variable y equal 25
|
|
lattice hex 0.8442
|
|
region box block 0 $x 0 $y -0.5 0.5
|
|
create_box 1 box
|
|
</PRE>
|
|
<PRE>variable xx equal 0.0
|
|
variable yy equal 0.0
|
|
variable v equal "(0.2*v_y*ylat * cos(v_xx/xlat * 2.0*PI*4.0/v_x) + 0.5*v_y*ylat - v_yy) > 0.0"
|
|
create_atoms 1 box var v set x xx set y yy
|
|
</PRE>
|
|
<CENTER><A HREF = "JPG/sinusoid.jpg"><IMG SRC = "JPG/sinusoid_small.jpg"></A>
|
|
</CENTER>
|
|
<P>The <I>rotate</I> keyword can be used with the <I>single</I> style, when adding
|
|
a single molecule to specify the orientation at which the molecule is
|
|
inserted. The axis of rotation is determined by the rotation vector
|
|
(Rx,Ry,Rz) that goes through the insertion point. The specified
|
|
<I>theta</I> determines the angle of rotation around that axis. Note that
|
|
the direction of rotation for the atoms around the rotation axis is
|
|
consistent with the right-hand rule: if your right-hand's thumb points
|
|
along <I>R</I>, then your fingers wrap around the axis in the direction of
|
|
rotation.
|
|
</P>
|
|
<P>The <I>units</I> keyword determines the meaning of the distance units used
|
|
to specify the coordinates of the one particle created by the <I>single</I>
|
|
style. A <I>box</I> value selects standard distance units as defined by
|
|
the <A HREF = "units.html">units</A> command, e.g. Angstroms for units = real or
|
|
metal. A <I>lattice</I> value means the distance units are in lattice
|
|
spacings.
|
|
</P>
|
|
<HR>
|
|
|
|
<P>Atom IDs are assigned to created atoms in the following way. The
|
|
collection of created atoms are assigned consecutive IDs that start
|
|
immediately following the largest atom ID existing before the
|
|
create_atoms command was invoked. When a simulation is performed on
|
|
different numbers of processors, there is no guarantee a particular
|
|
created atom will be assigned the same ID. If molecules are being
|
|
created, molecule IDs are assigned to created molecules in a similar
|
|
fashion.
|
|
</P>
|
|
<P>Aside from their ID, atom type, and xyz position, other properties of
|
|
created atoms are set to default values, depending on which quantities
|
|
are defined by the chosen <A HREF = "atom_style.html">atom style</A>. See the <A HREF = "atom_style.html">atom
|
|
style</A> command for more details. See the
|
|
<A HREF = "set.html">set</A> and <A HREF = "velocity.html">velocity</A> commands for info on how
|
|
to change these values.
|
|
</P>
|
|
<UL><LI>charge = 0.0
|
|
<LI>dipole moment magnitude = 0.0
|
|
<LI>diameter = 1.0
|
|
<LI>shape = 0.0 0.0 0.0
|
|
<LI>density = 1.0
|
|
<LI>volume = 1.0
|
|
<LI>velocity = 0.0 0.0 0.0
|
|
<LI>angular velocity = 0.0 0.0 0.0
|
|
<LI>angular momentum = 0.0 0.0 0.0
|
|
<LI>quaternion = (1,0,0,0)
|
|
<LI>bonds, angles, dihedrals, impropers = none
|
|
</UL>
|
|
<P>If molecules are being created, these defaults can be overridden by
|
|
values specified in the file read by the <A HREF = "molecule.html">molecule</A>
|
|
command. E.g. the file typically defines bonds (angles,etc) between
|
|
atoms in the molecule, and can optionally define charges on each atom.
|
|
</P>
|
|
<P>Note that the <I>sphere</I> atom style sets the default particle diameter
|
|
to 1.0 as well as the density. This means the mass for the particle
|
|
is not 1.0, but is PI/6 * diameter^3 = 0.5236.
|
|
</P>
|
|
<P>Note that the <I>ellipsoid</I> atom style sets the default particle shape
|
|
to (0.0 0.0 0.0) and the density to 1.0 which means it is a point
|
|
particle, not an ellipsoid, and has a mass of 1.0.
|
|
</P>
|
|
<P>Note that the <I>peri</I> style sets the default volume and density to 1.0
|
|
and thus also set the mass for the particle to 1.0.
|
|
</P>
|
|
<P>The <A HREF = "set.html">set</A> command can be used to override many of these
|
|
default settings.
|
|
</P>
|
|
<HR>
|
|
|
|
<P><B>Restrictions:</B>
|
|
</P>
|
|
<P>An <A HREF = "atom_style.html">atom_style</A> must be previously defined to use this
|
|
command.
|
|
</P>
|
|
<P>A rotation vector specified for a single molecule must be in
|
|
the z-direction for a 2d model.
|
|
</P>
|
|
<P><B>Related commands:</B>
|
|
</P>
|
|
<P><A HREF = "lattice.html">lattice</A>, <A HREF = "region.html">region</A>, <A HREF = "create_box.html">create_box</A>,
|
|
<A HREF = "read_data.html">read_data</A>, <A HREF = "read_restart.html">read_restart</A>
|
|
</P>
|
|
<P><B>Default:</B>
|
|
</P>
|
|
<P>The default for the <I>basis</I> keyword is that all created atoms are
|
|
assigned the argument <I>type</I> as their atom type (when single atoms are
|
|
being created). The other defaults are <I>remap</I> = no, <I>rotate</I> =
|
|
random, and <I>units</I> = lattice.
|
|
</P>
|
|
</HTML>
|