+
Description
+
This fix performs grand canonical Monte Carlo (GCMC) exchanges of
atoms or molecules of the given type with an imaginary ideal gas reservoir at
the specified T and chemical potential (mu) as discussed in
-(Frenkel). If used with the fix nvt command,
+(Frenkel). If used with the fix nvt command,
simulations in the grand canonical ensemble (muVT, constant chemical
potential, constant volume, and constant temperature) can be
performed. Specific uses include computing isotherms in microporous
-materials, or computing vapor-liquid coexistence curves.
-
-
Every N timesteps the fix attempts a number of GCMC exchanges (insertions
+materials, or computing vapor-liquid coexistence curves.
+
Every N timesteps the fix attempts a number of GCMC exchanges (insertions
or deletions) of gas atoms or molecules of
the given type between the simulation cell and the imaginary
reservoir. It also attempts a number of Monte Carlo
moves (translations and molecule rotations) of gas of the given type
-within the simulation cell or region. The average number of
+within the simulation cell or region. The average number of
attempted GCMC exchanges is X. The average number of attempted MC moves is M.
M should typically be chosen to be
approximately equal to the expected number of gas atoms or molecules
-of the given type within the simulation cell or region,
+of the given type within the simulation cell or region,
which will result in roughly one
-MC translation per atom or molecule per MC cycle.
-
-
For MC moves of molecular gasses, rotations and translations are each
+MC translation per atom or molecule per MC cycle.
+
For MC moves of molecular gasses, rotations and translations are each
attempted with 50% probability. For MC moves of atomic gasses,
translations are attempted 100% of the time. For MC exchanges of
either molecular or atomic gasses, deletions and insertions are each
-attempted with 50% probability.
-
-
All inserted particles are always assigned to two groups: the default group
-"all" and the group specified in the fix gcmc command (which can also
-be "all"). In addition, particles are also added to any groups specified
-by the group and grouptype keywords.
+attempted with 50% probability.
+
All inserted particles are always assigned to two groups: the default group
+“all” and the group specified in the fix gcmc command (which can also
+be “all”). In addition, particles are also added to any groups specified
+by the group and grouptype keywords.
If inserted particles are individual atoms, they are
-assigned the atom type given by the type argument. If they are molecules,
-the type argument has no effect and must be set to zero. Instead,
-the type of each atom in the inserted molecule is specified
-in the file read by the molecule command.
-
-
This fix cannot be used to perform MC insertions of gas atoms or
+assigned the atom type given by the type argument. If they are molecules,
+the type argument has no effect and must be set to zero. Instead,
+the type of each atom in the inserted molecule is specified
+in the file read by the molecule command.
+
This fix cannot be used to perform MC insertions of gas atoms or
molecules other than the exchanged type, but MC deletions,
translations, and rotations can be performed on any atom/molecule in
the fix group. All atoms in the simulation cell can be moved using
regular time integration translations, e.g. via
-fix_nvt, resulting in a hybrid GCMC+MD simulation. A
+fix_nvt, resulting in a hybrid GCMC+MD simulation. A
smaller-than-usual timestep size may be needed when running such a
hybrid simulation, especially if the inserted molecules are not well
-equilibrated.
-
-
This command may optionally use the region keyword to define an
-exchange and move volume. The specified region must have been
-previously defined with a region command. It must be
-defined with side = in. Insertion attempts occur only within the
-specified region. For non-rectangular regions, random trial
+equilibrated.
+
This command may optionally use the region keyword to define an
+exchange and move volume. The specified region must have been
+previously defined with a region command. It must be
+defined with side = in. Insertion attempts occur only within the
+specified region. For non-rectangular regions, random trial
points are generated within the rectangular bounding box until a point is found
that lies inside the region. If no valid point is generated after 1000 trials,
no insertion is performed, but it is counted as an attempted insertion.
-Move and deletion attempt candidates are selected
+Move and deletion attempt candidates are selected
from gas atoms or molecules within the region. If there are no candidates,
no move or deletion is performed, but it is counted as an attempt move
-or deletion. If an attempted move places the atom or molecule center-of-mass outside
-the specified region, a new attempted move is generated. This process is repeated
-until the atom or molecule center-of-mass is inside the specified region.
-
-
If used with fix_nvt, the temperature of the imaginary
+or deletion. If an attempted move places the atom or molecule center-of-mass outside
+the specified region, a new attempted move is generated. This process is repeated
+until the atom or molecule center-of-mass is inside the specified region.
+
If used with fix_nvt, the temperature of the imaginary
reservoir, T, should be set to be equivalent to the target temperature
-used in fix_nvt. Otherwise, the imaginary reservoir
+used in fix_nvt. Otherwise, the imaginary reservoir
will not be in thermal equilibrium with the simulation cell. Also,
it is important that the temperature used by fix nvt be dynamic,
-which can be achieved as follows:
-
-
compute mdtemp mdatoms temp
+which can be achieved as follows:
+compute mdtemp mdatoms temp
compute_modify mdtemp dynamic yes
fix mdnvt mdatoms nvt temp 300.0 300.0 10.0
-fix_modify mdnvt temp mdtemp
-
-
Note that neighbor lists are re-built every timestep that this fix is
+fix_modify mdnvt temp mdtemp
+
+
+Note that neighbor lists are re-built every timestep that this fix is
invoked, so you should not set N to be too small. However, periodic
rebuilds are necessary in order to avoid dangerous rebuilds and missed
interactions. Specifically, avoid performing so many MC translations
per timestep that atoms can move beyond the neighbor list skin
-distance. See the neighbor command for details.
-
-When an atom or molecule is to be inserted, its
+distance. See the neighbor command for details.
+When an atom or molecule is to be inserted, its
coordinates are chosen at a random position within the current
simulation cell or region, and new atom velocities are randomly chosen from
the specified temperature distribution given by T. The effective
temperature for new atom velocities can be increased or decreased
-using the optional keyword tfac_insert (see below). Relative
+using the optional keyword tfac_insert (see below). Relative
coordinates for atoms in a molecule are taken from the template
molecule provided by the user. The center of mass of the molecule
is placed at the insertion point. The orientation of the molecule
-is chosen at random by rotating about this point.
-
-Individual atoms are inserted, unless the mol keyword is used. It
-specifies a template-ID previously defined using the
-molecule command, which reads a file that defines the
+is chosen at random by rotating about this point.
+Individual atoms are inserted, unless the mol keyword is used. It
+specifies a template-ID previously defined using the
+molecule 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 molecule
+be specified in the molecule file. See the molecule
command for details. The only settings required to be in this file
-are the coordinates and types of atoms in the molecule.
-
-When not using the mol keyword, you should ensure you do not delete
+are the coordinates and types of atoms in the molecule.
+When not using the mol keyword, you should ensure you do not delete
atoms that are bonded to other atoms, or LAMMPS will
soon generate an error when it tries to find bonded neighbors. LAMMPS will
warn you if any of the atoms eligible for deletion have a non-zero
-molecule ID, but does not check for this at the time of deletion.
-
-If you wish to insert molecules via the mol keyword, that will have
-their bonds or angles constrained via SHAKE, use the shake keyword,
-specifying as its value the ID of a separate fix
-shake command which also appears in your input script.
-
-Optionally, users may specify the maximum rotation angle for
-molecular rotations using the maxangle keyword and specifying
+molecule ID, but does not check for this at the time of deletion.
+If you wish to insert molecules via the mol keyword, that will have
+their bonds or angles constrained via SHAKE, use the shake keyword,
+specifying as its value the ID of a separate fix shake command which also appears in your input script.
+Optionally, users may specify the maximum rotation angle for
+molecular rotations using the maxangle keyword and specifying
the angle in degrees. Rotations are performed by generating a random
point on the unit sphere and a random rotation angle on the
range [0,maxangle). The molecule is then rotated by that angle about an
-axis passing through the molecule center of mass. The axis is parallel
-to the unit vector defined by the point on the unit sphere.
+axis passing through the molecule center of mass. The axis is parallel
+to the unit vector defined by the point on the unit sphere.
The same procedure is used for randomly rotating molecules when they
-are inserted, except that the maximum angle is 360 degrees.
-
-Note that fix GCMC does not use configurational bias
-MC or any other kind of sampling of intramolecular degrees of freedom.
-Inserted molecules can have different orientations, but they will all
-have the same intramolecular configuration,
-which was specified in the molecule command input.
-
-For atomic gasses, inserted atoms have the specified atom type, but
-deleted atoms are any atoms that have been inserted or that belong
-to the user-specified fix group. For molecular gasses, exchanged
-molecules use the same atom types as in the template molecule
+are inserted, except that the maximum angle is 360 degrees.
+Note that fix GCMC does not use configurational bias
+MC or any other kind of sampling of intramolecular degrees of freedom.
+Inserted molecules can have different orientations, but they will all
+have the same intramolecular configuration,
+which was specified in the molecule command input.
+For atomic gasses, inserted atoms have the specified atom type, but
+deleted atoms are any atoms that have been inserted or that belong
+to the user-specified fix group. For molecular gasses, exchanged
+molecules use the same atom types as in the template molecule
supplied by the user. In both cases, exchanged
-atoms/molecules are assigned to two groups: the default group "all"
-and the group specified in the fix gcmc command (which can also be
-"all").
-
-The gas reservoir pressure can be specified using the pressure
-keyword, in which case the user-specified chemical potential is
-ignored. For non-ideal gas reservoirs, the user may also specify the
-fugacity coefficient using the fugacity_coeff keyword.
-
-The full_energy option means that fix GCMC will compute the total
+atoms/molecules are assigned to two groups: the default group “all”
+and the group specified in the fix gcmc command (which can also be
+“all”).
+The gas reservoir pressure can be specified using the pressure
+keyword, in which case the user-specified chemical potential is
+ignored. For non-ideal gas reservoirs, the user may also specify the
+fugacity coefficient using the fugacity_coeff keyword.
+The full_energy option means that fix GCMC will compute the total
potential energy of the entire simulated system. The total system
energy before and after the proposed GCMC move is then used in the
-Metropolis criterion to determine whether or not to accept the
+Metropolis criterion to determine whether or not to accept the
proposed GCMC move. By default, this option is off, in which case
only partial energies are computed to determine the difference in
-energy that would be caused by the proposed GCMC move.
-
-The full_energy option is needed for systems with complicated
-potential energy calculations, including the following:
-
-
- long-range electrostatics (kspace)
-
- many-body pair styles
-
- hybrid pair styles
-
- eam pair styles
-
- triclinic systems
-
- need to include potential energy contributions from other fixes
-
-
In these cases, LAMMPS will automatically apply the full_energy
-keyword and issue a warning message.
-
-
When the mol keyword is used, the full_energy option also includes
-the intramolecular energy of inserted and deleted molecules. If this
-is not desired, the intra_energy keyword can be used to define an
+energy that would be caused by the proposed GCMC move.
+
The full_energy option is needed for systems with complicated
+potential energy calculations, including the following:
+
+- long-range electrostatics (kspace)
+- many-body pair styles
+- hybrid pair styles
+- eam pair styles
+- triclinic systems
+- need to include potential energy contributions from other fixes
+
+
In these cases, LAMMPS will automatically apply the full_energy
+keyword and issue a warning message.
+
When the mol keyword is used, the full_energy option also includes
+the intramolecular energy of inserted and deleted molecules. If this
+is not desired, the intra_energy keyword can be used to define an
amount of energy that is subtracted from the final energy when a molecule
is inserted, and added to the initial energy when a molecule is
deleted. For molecules that have a non-zero intramolecular energy, this
-will ensure roughly the same behavior whether or not the full_energy
-option is used.
-
-
Inserted atoms and molecules are assigned random velocities based on the
+will ensure roughly the same behavior whether or not the full_energy
+option is used.
+
Inserted atoms and molecules are assigned random velocities based on the
specified temperature T. Because the relative velocity of
all atoms in the molecule is zero, this may result in inserted molecules
that are systematically too cold. In addition, the intramolecular potential
energy of the inserted molecule may cause the kinetic energy
-of the molecule to quickly increase or decrease after insertion.
-The tfac_insert keyword allows the user to counteract these effects
-by changing the temperature used to assign velocities to
+of the molecule to quickly increase or decrease after insertion.
+The tfac_insert keyword allows the user to counteract these effects
+by changing the temperature used to assign velocities to
inserted atoms and molecules by a constant factor. For a
particular application, some experimentation may be required
-to find a value of tfac_insert that results in inserted molecules that
-equilibrate quickly to the correct temperature.
-
-
Some fixes have an associated potential energy. Examples of such fixes
-include: efield, gravity,
-addforce, langevin,
-restrain, temp/berendsen,
-temp/rescale, and wall fixes.
-For that energy to be included in the total potential energy of the
+to find a value of tfac_insert that results in inserted molecules that
+equilibrate quickly to the correct temperature.
+
Some fixes have an associated potential energy. Examples of such fixes
+include: efield, gravity,
+addforce, langevin,
+restrain, temp/berendsen,
+temp/rescale, and wall fixes.
+For that energy to be included in the total potential energy of the
system (the quantity used when performing GCMC moves),
-you MUST enable the fix_modify energy option for
-that fix. The doc pages for individual fix commands
-specify if this should be done.
-
-
Use the charge option to insert atoms with a user-specified point
-charge. Note that doing so will cause the system to become non-neutral.
-LAMMPS issues a warning when using long-range electrostatics (kspace)
-with non-neutral systems. See the
-compute_group_group documentation for more
-details about simulating non-neutral systems with kspace on.
-
-
Use of this fix typically will cause the number of atoms to fluctuate,
+you MUST enable the fix_modify energy option for
+that fix. The doc pages for individual fix commands
+specify if this should be done.
+
Use the charge option to insert atoms with a user-specified point
+charge. Note that doing so will cause the system to become non-neutral.
+LAMMPS issues a warning when using long-range electrostatics (kspace)
+with non-neutral systems. See the
+compute_group_group documentation for more
+details about simulating non-neutral systems with kspace on.
+
Use of this fix typically will cause the number of atoms to fluctuate,
therefore, you will want to use the
-compute_modify command to insure that the
+compute_modify command to insure that the
current number of atoms is used as a normalizing factor each time
-temperature is computed. Here is the necessary command:
-
-
compute_modify thermo_temp dynamic yes
-
-
If LJ units are used, note that a value of 0.18292026 is used by this
-fix as the reduced value for Planck's constant. This value was
+temperature is computed. Here is the necessary command:
+
compute_modify thermo_temp dynamic yes
+
+
+
If LJ units are used, note that a value of 0.18292026 is used by this
+fix as the reduced value for Planck’s constant. This value was
derived from LJ parameters for argon, where h* = h/sqrt(sigma^2 *
epsilon * mass), sigma = 3.429 angstroms, epsilon/k = 121.85 K, and
-mass = 39.948 amu.
-
-
The group keyword assigns all inserted atoms to the group
-of the group-ID value. The grouptype keyword assigns all
-inserted atoms of the specified type to the group
-of the group-ID value.
-
-
Restart, fix_modify, output, run start/stop, minimize info:
-
-
This fix writes the state of the fix to binary restart
-files. This includes information about the random
+mass = 39.948 amu.
+
The group keyword assigns all inserted atoms to the group
+of the group-ID value. The grouptype keyword assigns all
+inserted atoms of the specified type to the group
+of the group-ID value.
+