Edits to fix.rst and additions for missing styles

This commit is contained in:
Karl Hammond
2022-08-22 21:13:59 -05:00
parent bc3a673e89
commit 4d8dc03a3f

View File

@ -6,7 +6,7 @@ fix command
Syntax
""""""
.. parsed-literal::
.. code-block:: LAMMPS
fix ID group-ID style args
@ -37,7 +37,7 @@ defined in LAMMPS and new ones can be added; see the
:doc:`Modify <Modify>` page for details.
Fixes perform their operations at different stages of the timestep.
If 2 or more fixes operate at the same stage of the timestep, they are
If two or more fixes operate at the same stage of the timestep, they are
invoked in the order they were specified in the input script.
The ID of a fix can only contain alphanumeric characters and
@ -52,8 +52,8 @@ Fixes can be deleted with the :doc:`unfix <unfix>` command.
off the first one. This is especially important to realize for
integration fixes. For example, using a :doc:`fix nve <fix_nve>`
command for a second run after using a :doc:`fix nvt <fix_nh>` command
for the first run, will not cancel out the NVT time integration
invoked by the "fix nvt" command. Thus two time integrators would be
for the first run will not cancel out the NVT time integration
invoked by the "fix nvt" command. Thus, two time integrators would be
in place!
If you specify a new fix with the same ID and style as an existing
@ -79,10 +79,10 @@ for individual fixes for info on which ones can be restarted.
Some fixes calculate one of three styles of quantities: global,
per-atom, or local, which can be used by other commands or output as
described below. A global quantity is one or more system-wide values,
e.g. the energy of a wall interacting with particles. A per-atom
quantity is one or more values per atom, e.g. the displacement vector
for each atom since time 0. Per-atom values are set to 0.0 for atoms
described below. A global quantity is one or more system-wide values
(e.g., the energy of a wall interacting with particles). A per-atom
quantity is one or more values per atom (e.g., the displacement vector
for each atom since time 0). Per-atom values are set to 0.0 for atoms
not in the specified fix group. Local quantities are calculated by
each processor based on the atoms it owns, but there may be zero or
more per atoms.
@ -95,30 +95,32 @@ The fix page will explain.
Global, per-atom, and local quantities each come in three kinds: a
single scalar value, a vector of values, or a 2d array of values. The
doc page for each fix describes the style and kind of values it
produces, e.g. a per-atom vector. Some fixes produce more than one
kind of a single style, e.g. a global scalar and a global vector.
produces (e.g., a per-atom vector). Some fixes produce more than one
kind of a single style (e.g., a global scalar and a global vector).
When a fix quantity is accessed, as in many of the output commands
discussed below, it can be referenced via the following bracket
notation, where ID is the ID of the fix:
+-------------+--------------------------------------------+
| f_ID | entire scalar, vector, or array |
| f_ID | entire scalar, vector, or array |
+-------------+--------------------------------------------+
| f_ID[I] | one element of vector, one column of array |
| f_ID[I] | one element of vector, one column of array |
+-------------+--------------------------------------------+
| f_ID[I][J] | one element of array |
| f_ID[I][J] | one element of array |
+-------------+--------------------------------------------+
In other words, using one bracket reduces the dimension of the
quantity once (vector -> scalar, array -> vector). Using two brackets
reduces the dimension twice (array -> scalar). Thus a command that
uses scalar fix values as input can also process elements of a vector
or array.
quantity once (vector :math:`\to` scalar, array :math:`\to` vector). Using two
brackets reduces the dimension twice (array :math:`\to` scalar). Thus, a
command that uses scalar fix values as input can also process elements of a
vector or array.
Note that commands and :doc:`variables <variable>` which use fix
quantities typically do not allow for all kinds, e.g. a command may
require a vector of values, not a scalar. This means there is no
Note that commands and :doc:`variables <variable>` that use fix
quantities typically do not allow for all kinds (e.g., a command may
require a vector of values, not a scalar), and even if they do, the context
in which they are called can be used to resolve which output is being
requested. This means there is no
ambiguity about referring to a fix quantity as f_ID even if it
produces, for example, both a scalar and vector. The doc pages for
various commands explain the details.
@ -128,34 +130,37 @@ various commands explain the details.
In LAMMPS, the values generated by a fix can be used in several ways:
* Global values can be output via the :doc:`thermo_style custom <thermo_style>` or :doc:`fix ave/time <fix_ave_time>` command.
Or the values can be referenced in a :doc:`variable equal <variable>` or
:doc:`variable atom <variable>` command.
* Per-atom values can be output via the :doc:`dump custom <dump>` command.
Or they can be time-averaged via the :doc:`fix ave/atom <fix_ave_atom>`
Alternatively, the values can be referenced in an
:doc:`equal-style variable <variable>` command.
* Per-atom values can be output via the :doc:`dump custom <dump>` command,
or they can be time-averaged via the :doc:`fix ave/atom <fix_ave_atom>`
command or reduced by the :doc:`compute reduce <compute_reduce>`
command. Or the per-atom values can be referenced in an :doc:`atom-style variable <variable>`.
* Local values can be reduced by the :doc:`compute reduce <compute_reduce>` command, or histogrammed by the :doc:`fix ave/histo <fix_ave_histo>` command.
command. Alternatively, per-atom values can be referenced in an
:doc:`atom-style variable <variable>`.
* Local values can be reduced by the :doc:`compute reduce <compute_reduce>`
command or histogrammed by the :doc:`fix ave/histo <fix_ave_histo>` command.
They can also be output by the :doc:`dump local <dump>` command.
See the :doc:`Howto output <Howto_output>` page for a summary of
various LAMMPS output options, many of which involve fixes.
The results of fixes that calculate global quantities can be either
"intensive" or "extensive" values. Intensive means the value is
independent of the number of atoms in the simulation,
e.g. temperature. Extensive means the value scales with the number of
atoms in the simulation, e.g. total rotational kinetic energy.
independent of the number of atoms in the simulation
(e.g., temperature). Extensive means the value scales with the number of
atoms in the simulation (e.g., total rotational kinetic energy).
:doc:`Thermodynamic output <thermo_style>` will normalize extensive
values by the number of atoms in the system, depending on the
"thermo_modify norm" setting. It will not normalize intensive values.
If a fix value is accessed in another way, e.g. by a
:doc:`variable <variable>`, you may want to know whether it is an
intensive or extensive value. See the page for individual fixes
If a fix value is accessed in another way (e.g., by a
:doc:`variable <variable>`), you may want to know whether it is an
intensive or extensive value. See the page for individual fix styles
for further info.
----------
Each fix style has its own page which describes its arguments and
what it does, as listed below. Here is an alphabetic list of fix
Each fix style has its own page that describes its arguments and
what it does, as listed below. Here is an alphabetical list of fix
styles available in LAMMPS. They are also listed in more compact form
on the :doc:`Commands fix <Commands_fix>` doc page.
@ -179,7 +184,7 @@ accelerated styles exist.
* :doc:`ave/atom <fix_ave_atom>` - compute per-atom time-averaged quantities
* :doc:`ave/chunk <fix_ave_chunk>` - compute per-chunk time-averaged quantities
* :doc:`ave/correlate <fix_ave_correlate>` - compute/output time correlations
* :doc:`ave/correlate/long <fix_ave_correlate_long>` -
* :doc:`ave/correlate/long <fix_ave_correlate_long>` - alternative to :doc:`ave/correlate <fix_ave_correlate>` that allows efficient calculation over long time windows
* :doc:`ave/histo <fix_ave_histo>` - compute/output time-averaged histograms
* :doc:`ave/histo/weight <fix_ave_histo>` - weighted version of fix ave/histo
* :doc:`ave/time <fix_ave_time>` - compute/output global time-averaged quantities
@ -216,10 +221,10 @@ accelerated styles exist.
* :doc:`electrode/thermo <fix_electrode_conp>` - apply thermo-potentiostat
* :doc:`electron/stopping <fix_electron_stopping>` - electronic stopping power as a friction force
* :doc:`electron/stopping/fit <fix_electron_stopping>` - electronic stopping power as a friction force
* :doc:`enforce2d <fix_enforce2d>` - zero out z-dimension velocity and force
* :doc:`eos/cv <fix_eos_cv>` -
* :doc:`eos/table <fix_eos_table>` -
* :doc:`eos/table/rx <fix_eos_table_rx>` -
* :doc:`enforce2d <fix_enforce2d>` - zero out *z*-dimension velocity and force
* :doc:`eos/cv <fix_eos_cv>` - applies a mesoparticle equation of state to relate the particle internal energy to the particle internal temperature
* :doc:`eos/table <fix_eos_table>` - applies a tabulated mesoparticle equation of state to relate the particle internal energy to the particle internal temperature
* :doc:`eos/table/rx <fix_eos_table_rx>` - applies a tabulated mesoparticle equation of state to relate the concentration-dependent particle internal energy to the particle internal temperature
* :doc:`evaporate <fix_evaporate>` - remove atoms from simulation periodically
* :doc:`external <fix_external>` - callback to an external driver program
* :doc:`ffl <fix_ffl>` - apply a Fast-Forward Langevin equation thermostat
@ -243,9 +248,9 @@ accelerated styles exist.
* :doc:`langevin/eff <fix_langevin_eff>` - Langevin temperature control for the electron force field model
* :doc:`langevin/spin <fix_langevin_spin>` - Langevin temperature control for a spin or spin-lattice system
* :doc:`latte <fix_latte>` - wrapper on LATTE density-functional tight-binding code
* :doc:`lb/fluid <fix_lb_fluid>` -
* :doc:`lb/momentum <fix_lb_momentum>` -
* :doc:`lb/viscous <fix_lb_viscous>` -
* :doc:`lb/fluid <fix_lb_fluid>` - lattice-Boltzmann fluid on a uniform mesh
* :doc:`lb/momentum <fix_lb_momentum>` - :doc:`fix momentum <fix_momentum>` replacement for use with a lattice-Boltzmann fluid
* :doc:`lb/viscous <fix_lb_viscous>` - :doc:`fix viscous <fix_viscous>` replacement for use with a lattice-Boltzmann fluid
* :doc:`lineforce <fix_lineforce>` - constrain atoms to move in a line
* :doc:`manifoldforce <fix_manifoldforce>` - restrain atoms to a manifold during minimization
* :doc:`mdi/qm <fix_mdi_qm>` - LAMMPS operates as driver for a quantum code via the MolSSI Driver Interface (MDI)
@ -286,8 +291,8 @@ accelerated styles exist.
* :doc:`nve/eff <fix_nve_eff>` - NVE for nuclei and electrons in the electron force field model
* :doc:`nve/limit <fix_nve_limit>` - NVE with limited step length
* :doc:`nve/line <fix_nve_line>` - NVE for line segments
* :doc:`nve/manifold/rattle <fix_nve_manifold_rattle>` -
* :doc:`nve/noforce <fix_nve_noforce>` - NVE without forces (v only)
* :doc:`nve/manifold/rattle <fix_nve_manifold_rattle>` - NVE time integration for atoms constrained to a curved surface (manifold)
* :doc:`nve/noforce <fix_nve_noforce>` - NVE without forces (update positions only)
* :doc:`nve/sphere <fix_nve_sphere>` - NVE for spherical particles
* :doc:`nve/bpm/sphere <fix_nve_bpm_sphere>` - NVE for spherical particles used in the BPM package
* :doc:`nve/spin <fix_nve_spin>` - NVE for a spin or spin-lattice system
@ -297,7 +302,7 @@ accelerated styles exist.
* :doc:`nvt/asphere <fix_nvt_asphere>` - NVT for aspherical particles
* :doc:`nvt/body <fix_nvt_body>` - NVT for body particles
* :doc:`nvt/eff <fix_nh_eff>` - NVE for nuclei and electrons in the electron force field model
* :doc:`nvt/manifold/rattle <fix_nvt_manifold_rattle>` -
* :doc:`nvt/manifold/rattle <fix_nvt_manifold_rattle>` - NVT time integration for atoms constrained to a curved surface (manifold)
* :doc:`nvt/sllod <fix_nvt_sllod>` - NVT for NEMD with SLLOD equations
* :doc:`nvt/sllod/eff <fix_nvt_sllod_eff>` - NVT for NEMD with SLLOD equations for the electron force field model
* :doc:`nvt/sphere <fix_nvt_sphere>` - NVT for spherical particles
@ -312,17 +317,17 @@ accelerated styles exist.
* :doc:`planeforce <fix_planeforce>` - constrain atoms to move in a plane
* :doc:`plumed <fix_plumed>` - wrapper on PLUMED free energy library
* :doc:`poems <fix_poems>` - constrain clusters of atoms to move as coupled rigid bodies
* :doc:`polarize/bem/gmres <fix_polarize>` -
* :doc:`polarize/bem/icc <fix_polarize>` -
* :doc:`polarize/functional <fix_polarize>` -
* :doc:`polarize/bem/gmres <fix_polarize>` - compute induced charges at the interface between impermeable media with different dielectric constants with generalized minimum residual (GMRES)
* :doc:`polarize/bem/icc <fix_polarize>` - compute induced charges at the interface between impermeable media with different dielectric constants with the sucessive over-relaxation algorithm
* :doc:`polarize/functional <fix_polarize>` - compute induced charges at the interface between impermeable media with different dielectric constants with the energy variational approach
* :doc:`pour <fix_pour>` - pour new atoms/molecules into a granular simulation domain
* :doc:`precession/spin <fix_precession_spin>` -
* :doc:`precession/spin <fix_precession_spin>` - apply a precession torque to each magnetic spin
* :doc:`press/berendsen <fix_press_berendsen>` - pressure control by Berendsen barostat
* :doc:`print <fix_print>` - print text and variables during a simulation
* :doc:`propel/self <fix_propel_self>` - model self-propelled particles
* :doc:`property/atom <fix_property_atom>` - add customized per-atom values
* :doc:`python/invoke <fix_python_invoke>` - call a Python function during a simulation
* :doc:`python/move <fix_python_move>` - call a Python function during a simulation run
* :doc:`python/move <fix_python_move>` - move particles using a Python function during a simulation run
* :doc:`qbmsst <fix_qbmsst>` - quantum bath multi-scale shock technique time integrator
* :doc:`qeq/comb <fix_qeq_comb>` - charge equilibration for COMB potential
* :doc:`qeq/dynamic <fix_qeq>` - charge equilibration via dynamic method
@ -350,21 +355,21 @@ accelerated styles exist.
* :doc:`rigid/nvt <fix_rigid>` - constrain one or more clusters of atoms to move as a rigid body with NVT integration
* :doc:`rigid/nvt/small <fix_rigid>` - constrain many small clusters of atoms to move as a rigid body with NVT integration
* :doc:`rigid/small <fix_rigid>` - constrain many small clusters of atoms to move as a rigid body with NVE integration
* :doc:`rx <fix_rx>` -
* :doc:`saed/vtk <fix_saed_vtk>` -
* :doc:`rx <fix_rx>` - solve reaction kinetic ODEs for a defined reaction set
* :doc:`saed/vtk <fix_saed_vtk>` - time-average the intensities from :doc:`compute saed <compute_saed>`
* :doc:`setforce <fix_setforce>` - set the force on each atom
* :doc:`setforce/spin <fix_setforce>` - set magnetic precession vectors on each atom
* :doc:`shake <fix_shake>` - SHAKE constraints on bonds and/or angles
* :doc:`shardlow <fix_shardlow>` - integration of DPD equations of motion using the Shardlow splitting
* :doc:`smd <fix_smd>` - applied a steered MD force to a group
* :doc:`smd/adjust_dt <fix_smd_adjust_dt>` -
* :doc:`smd/integrate_tlsph <fix_smd_integrate_tlsph>` -
* :doc:`smd/integrate_ulsph <fix_smd_integrate_ulsph>` -
* :doc:`smd/move_tri_surf <fix_smd_move_triangulated_surface>` -
* :doc:`smd/setvel <fix_smd_setvel>` -
* :doc:`smd/wall_surface <fix_smd_wall_surface>` -
* :doc:`smd/adjust_dt <fix_smd_adjust_dt>` - calculate a new stable time increment for use with SMD integrators
* :doc:`smd/integrate_tlsph <fix_smd_integrate_tlsph>` - explicit time integration with total Lagrangian SPH pair style
* :doc:`smd/integrate_ulsph <fix_smd_integrate_ulsph>` - explicit time integration with updated Lagrangian SPH pair style
* :doc:`smd/move_tri_surf <fix_smd_move_triangulated_surface>` - update position and velocity near rigid surfaces using SPH integrators
* :doc:`smd/setvel <fix_smd_setvel>` - sets each velocity component, ignoring forces, for Smooth Mach Dynamics
* :doc:`smd/wall_surface <fix_smd_wall_surface>` - create a rigid wall with a triangulated surface for use in Smooth Mach Dynamics
* :doc:`sph <fix_sph>` - time integration for SPH/DPDE particles
* :doc:`sph/stationary <fix_sph_stationary>` -
* :doc:`sph/stationary <fix_sph_stationary>` - update energy and density but not position or velocity in Smooth Particle Hydrodynamics
* :doc:`spring <fix_spring>` - apply harmonic spring force to group of atoms
* :doc:`spring/chunk <fix_spring_chunk>` - apply harmonic spring force to each chunk of atoms
* :doc:`spring/rg <fix_spring_rg>` - spring on radius of gyration of group of atoms
@ -372,7 +377,7 @@ accelerated styles exist.
* :doc:`srd <fix_srd>` - stochastic rotation dynamics (SRD)
* :doc:`store/force <fix_store_force>` - store force on each atom
* :doc:`store/state <fix_store_state>` - store attributes for each atom
* :doc:`tdpd/source <fix_dpd_source>` -
* :doc:`tdpd/source <fix_dpd_source>` - add external concentration source
* :doc:`temp/berendsen <fix_temp_berendsen>` - temperature control by Berendsen thermostat
* :doc:`temp/csld <fix_temp_csvr>` - canonical sampling thermostat with Langevin dynamics
* :doc:`temp/csvr <fix_temp_csvr>` - canonical sampling thermostat with Hamiltonian dynamics
@ -381,27 +386,27 @@ accelerated styles exist.
* :doc:`tfmc <fix_tfmc>` - perform force-bias Monte Carlo with time-stamped method
* :doc:`tgnvt/drude <fix_tgnh_drude>` - NVT time integration for Drude polarizable model via temperature-grouped Nose-Hoover
* :doc:`tgnpt/drude <fix_tgnh_drude>` - NPT time integration for Drude polarizable model via temperature-grouped Nose-Hoover
* :doc:`thermal/conductivity <fix_thermal_conductivity>` - Muller-Plathe kinetic energy exchange for thermal conductivity calculation
* :doc:`ti/spring <fix_ti_spring>` -
* :doc:`thermal/conductivity <fix_thermal_conductivity>` - Mueller-Plathe kinetic energy exchange for thermal conductivity calculation
* :doc:`ti/spring <fix_ti_spring>` - perform thermodynamic integration between a solid and an Einstein crystal
* :doc:`tmd <fix_tmd>` - guide a group of atoms to a new configuration
* :doc:`ttm <fix_ttm>` - two-temperature model for electronic/atomic coupling (replicated grid)
* :doc:`ttm/grid <fix_ttm>` - two-temperature model for electronic/atomic coupling (distributed grid)
* :doc:`ttm/mod <fix_ttm>` - enhanced two-temperature model with additional options
* :doc:`tune/kspace <fix_tune_kspace>` - auto-tune KSpace parameters
* :doc:`vector <fix_vector>` - accumulate a global vector every N timesteps
* :doc:`viscosity <fix_viscosity>` - Muller-Plathe momentum exchange for viscosity calculation
* :doc:`tune/kspace <fix_tune_kspace>` - auto-tune :math:`k`-space parameters
* :doc:`vector <fix_vector>` - accumulate a global vector every *N* timesteps
* :doc:`viscosity <fix_viscosity>` - Mueller-Plathe momentum exchange for viscosity calculation
* :doc:`viscous <fix_viscous>` - viscous damping for granular simulations
* :doc:`viscous/sphere <fix_viscous_sphere>` - viscous damping on angular velocity for granular simulations
* :doc:`wall/body/polygon <fix_wall_body_polygon>` -
* :doc:`wall/body/polyhedron <fix_wall_body_polyhedron>` -
* :doc:`wall/body/polygon <fix_wall_body_polygon>` - time integration for body particles of style :doc:`rounded/polygon <Howto_body>`
* :doc:`wall/body/polyhedron <fix_wall_body_polyhedron>` - time integration for body particles of style :doc:`rounded/polyhedron <Howto_body>`
* :doc:`wall/colloid <fix_wall>` - Lennard-Jones wall interacting with finite-size particles
* :doc:`wall/ees <fix_wall_ees>` - wall for ellipsoidal particles
* :doc:`wall/gran <fix_wall_gran>` - frictional wall(s) for granular simulations
* :doc:`wall/gran/region <fix_wall_gran_region>` -
* :doc:`wall/gran/region <fix_wall_gran_region>` - :doc:`fix wall/region <fix_wall_region>` equivalent for use with granular particles
* :doc:`wall/harmonic <fix_wall>` - harmonic spring wall
* :doc:`wall/lj1043 <fix_wall>` - Lennard-Jones 10-4-3 wall
* :doc:`wall/lj126 <fix_wall>` - Lennard-Jones 12-6 wall
* :doc:`wall/lj93 <fix_wall>` - Lennard-Jones 9-3 wall
* :doc:`wall/lj1043 <fix_wall>` - Lennard-Jones 10--4--3 wall
* :doc:`wall/lj126 <fix_wall>` - Lennard-Jones 12--6 wall
* :doc:`wall/lj93 <fix_wall>` - Lennard-Jones 9--3 wall
* :doc:`wall/morse <fix_wall>` - Morse potential wall
* :doc:`wall/piston <fix_wall_piston>` - moving reflective piston wall
* :doc:`wall/reflect <fix_wall_reflect>` - reflecting wall(s)
@ -415,7 +420,8 @@ Restrictions
""""""""""""
Some fix styles are part of specific packages. They are only enabled
if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info. The doc pages for
if LAMMPS was built with that package. See the
:doc:`Build package <Build_package>` page for more info. The doc pages for
individual fixes tell if it is part of a package.
Related commands