Files
lammps/doc/html/Modify_fix.html
2025-01-13 14:55:48 +00:00

377 lines
20 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>3.9. Fix styles &mdash; LAMMPS documentation</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx-design.min.css" type="text/css" />
<link rel="stylesheet" href="_static/css/lammps.css" type="text/css" />
<link rel="shortcut icon" href="_static/lammps.ico"/>
<link rel="canonical" href="https://docs.lammps.org/Modify_fix.html" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/design-tabs.js?v=f930bc37"></script>
<script async="async" src="_static/mathjax/es5/tex-mml-chtml.js?v=cadf963e"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="3.10. Input script command style" href="Modify_command.html" />
<link rel="prev" title="3.8. Compute styles" href="Modify_compute.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="Manual.html">
<img src="_static/lammps-logo.png" class="logo" alt="Logo"/>
</a>
<div class="lammps_version">Version: <b>19 Nov 2024</b></div>
<div class="lammps_release">git info: </div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Intro.html">1. Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="Install.html">2. Install LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Build.html">3. Build LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Run_head.html">4. Run LAMMPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="Commands.html">5. Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Packages.html">6. Optional packages</a></li>
<li class="toctree-l1"><a class="reference internal" href="Speed.html">7. Accelerate performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="Howto.html">8. Howto discussions</a></li>
<li class="toctree-l1"><a class="reference internal" href="Examples.html">9. Example scripts</a></li>
<li class="toctree-l1"><a class="reference internal" href="Tools.html">10. Auxiliary tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="Errors.html">11. Errors</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Programmer Guide</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="Library.html">1. LAMMPS Library Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="Python_head.html">2. Use Python with LAMMPS</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="Modify.html">3. Modifying &amp; extending LAMMPS</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Modify_overview.html">3.1. Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_contribute.html">3.2. Submitting new features for inclusion in LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_requirements.html">3.3. Requirements for contributions to LAMMPS</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_style.html">3.4. LAMMPS programming style</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_atom.html">3.5. Atom styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_pair.html">3.6. Pair styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_bond.html">3.7. Bond, angle, dihedral, improper styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_compute.html">3.8. Compute styles</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">3.9. Fix styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_command.html">3.10. Input script command style</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_dump.html">3.11. Dump styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_kspace.html">3.12. Kspace styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_min.html">3.13. Minimization styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_region.html">3.14. Region styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_body.html">3.15. Body styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_gran_sub_mod.html">3.16. Granular Sub-Model styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_thermo.html">3.17. Thermodynamic output options</a></li>
<li class="toctree-l2"><a class="reference internal" href="Modify_variable.html">3.18. Variable options</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Developer.html">4. Information for Developers</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Command Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="commands_list.html">Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="fixes.html">Fix Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="computes.html">Compute Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="pairs.html">Pair Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="bonds.html">Bond Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="angles.html">Angle Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="dihedrals.html">Dihedral Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="impropers.html">Improper Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="dumps.html">Dump Styles</a></li>
<li class="toctree-l1"><a class="reference internal" href="fix_modify_atc_commands.html">fix_modify AtC commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="Bibliography.html">Bibliography</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="Manual.html">LAMMPS</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="Manual.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="Modify.html"><span class="section-number">3. </span>Modifying &amp; extending LAMMPS</a></li>
<li class="breadcrumb-item active"><span class="section-number">3.9. </span>Fix styles</li>
<li class="wy-breadcrumbs-aside">
<a href="https://www.lammps.org"><img src="_static/lammps-logo.png" width="64" height="16" alt="LAMMPS Homepage"></a> | <a href="Commands_all.html">Commands</a>
</li>
</ul><div class="rst-breadcrumbs-buttons" role="navigation" aria-label="Sequential page navigation">
<a href="Modify_compute.html" class="btn btn-neutral float-left" title="3.8. Compute styles" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Modify_command.html" class="btn btn-neutral float-right" title="3.10. Input script command style" accesskey="n">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<p><span class="math notranslate nohighlight">\(\renewcommand{\AA}{\text{Å}}\)</span></p>
<section id="fix-styles">
<h1><span class="section-number">3.9. </span>Fix styles<a class="headerlink" href="#fix-styles" title="Link to this heading"></a></h1>
<p>In LAMMPS, a “fix” is any operation that is computed during
timestepping that alters some property of the system. Essentially
everything that happens during a simulation besides force computation,
neighbor list construction, and output, is a “fix”. This includes
time integration (update of coordinates and velocities), force
constraints or boundary conditions (SHAKE or walls), and diagnostics
(compute a diffusion coefficient). New styles can be created to add
new options to LAMMPS.</p>
<p>Fix_setforce.cpp is a simple example of setting forces on atoms to
prescribed values. There are dozens of fix options already in LAMMPS;
choose one as a template that is similar to what you want to
implement.</p>
<p>Here is a brief description of methods you can define in your new
derived class. See fix.h for details.</p>
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td><p>setmask</p></td>
<td><p>determines when the fix is called during the timestep (required)</p></td>
</tr>
<tr class="row-even"><td><p>init</p></td>
<td><p>initialization before a run (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>init_list</p></td>
<td><p>store pointer to neighbor list; called by neighbor list code (optional)</p></td>
</tr>
<tr class="row-even"><td><p>setup_pre_exchange</p></td>
<td><p>called before atom exchange in setup (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>setup_pre_force</p></td>
<td><p>called before force computation in setup (optional)</p></td>
</tr>
<tr class="row-even"><td><p>setup</p></td>
<td><p>called immediately before the first timestep and after forces are computed (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>min_setup_pre_force</p></td>
<td><p>like setup_pre_force, but for minimizations instead of MD runs (optional)</p></td>
</tr>
<tr class="row-even"><td><p>min_setup</p></td>
<td><p>like setup, but for minimizations instead of MD runs (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>initial_integrate</p></td>
<td><p>called at very beginning of each timestep (optional)</p></td>
</tr>
<tr class="row-even"><td><p>pre_exchange</p></td>
<td><p>called before atom exchange on re-neighboring steps (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>pre_neighbor</p></td>
<td><p>called before neighbor list build (optional)</p></td>
</tr>
<tr class="row-even"><td><p>pre_force</p></td>
<td><p>called before pair &amp; molecular forces are computed (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>post_force</p></td>
<td><p>called after pair &amp; molecular forces are computed and communicated (optional)</p></td>
</tr>
<tr class="row-even"><td><p>final_integrate</p></td>
<td><p>called at end of each timestep (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>end_of_step</p></td>
<td><p>called at very end of timestep (optional)</p></td>
</tr>
<tr class="row-even"><td><p>write_restart</p></td>
<td><p>dumps fix info to restart file (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>restart</p></td>
<td><p>uses info from restart file to re-initialize the fix (optional)</p></td>
</tr>
<tr class="row-even"><td><p>grow_arrays</p></td>
<td><p>allocate memory for atom-based arrays used by fix (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>copy_arrays</p></td>
<td><p>copy atom info when an atom migrates to a new processor (optional)</p></td>
</tr>
<tr class="row-even"><td><p>pack_exchange</p></td>
<td><p>store atoms data in a buffer (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>unpack_exchange</p></td>
<td><p>retrieve atoms data from a buffer (optional)</p></td>
</tr>
<tr class="row-even"><td><p>pack_restart</p></td>
<td><p>store atoms data for writing to restart file (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>unpack_restart</p></td>
<td><p>retrieve atoms data from a restart file buffer (optional)</p></td>
</tr>
<tr class="row-even"><td><p>size_restart</p></td>
<td><p>size of atoms data (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>maxsize_restart</p></td>
<td><p>max size of atoms data (optional)</p></td>
</tr>
<tr class="row-even"><td><p>setup_pre_force_respa</p></td>
<td><p>same as setup_pre_force, but for rRESPA (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>initial_integrate_respa</p></td>
<td><p>same as initial_integrate, but for rRESPA (optional)</p></td>
</tr>
<tr class="row-even"><td><p>post_integrate_respa</p></td>
<td><p>called after the first half integration step is done in rRESPA (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>pre_force_respa</p></td>
<td><p>same as pre_force, but for rRESPA (optional)</p></td>
</tr>
<tr class="row-even"><td><p>post_force_respa</p></td>
<td><p>same as post_force, but for rRESPA (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>final_integrate_respa</p></td>
<td><p>same as final_integrate, but for rRESPA (optional)</p></td>
</tr>
<tr class="row-even"><td><p>min_pre_force</p></td>
<td><p>called after pair &amp; molecular forces are computed in minimizer (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>min_post_force</p></td>
<td><p>called after pair &amp; molecular forces are computed and communicated in minimizer (optional)</p></td>
</tr>
<tr class="row-even"><td><p>min_store</p></td>
<td><p>store extra data for linesearch based minimization on a LIFO stack (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>min_pushstore</p></td>
<td><p>push the minimization LIFO stack one element down (optional)</p></td>
</tr>
<tr class="row-even"><td><p>min_popstore</p></td>
<td><p>pop the minimization LIFO stack one element up (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>min_clearstore</p></td>
<td><p>clear minimization LIFO stack (optional)</p></td>
</tr>
<tr class="row-even"><td><p>min_step</p></td>
<td><p>reset or move forward on line search minimization (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>min_dof</p></td>
<td><p>report number of degrees of freedom <em>added</em> by this fix in minimization (optional)</p></td>
</tr>
<tr class="row-even"><td><p>max_alpha</p></td>
<td><p>report maximum allowed step size during linesearch minimization (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>pack_comm</p></td>
<td><p>pack a buffer to communicate a per-atom quantity (optional)</p></td>
</tr>
<tr class="row-even"><td><p>unpack_comm</p></td>
<td><p>unpack a buffer to communicate a per-atom quantity (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>pack_reverse_comm</p></td>
<td><p>pack a buffer to reverse communicate a per-atom quantity (optional)</p></td>
</tr>
<tr class="row-even"><td><p>unpack_reverse_comm</p></td>
<td><p>unpack a buffer to reverse communicate a per-atom quantity (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>dof</p></td>
<td><p>report number of degrees of freedom <em>removed</em> by this fix during MD (optional)</p></td>
</tr>
<tr class="row-even"><td><p>compute_scalar</p></td>
<td><p>return a global scalar property that the fix computes (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>compute_vector</p></td>
<td><p>return a component of a vector property that the fix computes (optional)</p></td>
</tr>
<tr class="row-even"><td><p>compute_array</p></td>
<td><p>return a component of an array property that the fix computes (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>deform</p></td>
<td><p>called when the box size is changed (optional)</p></td>
</tr>
<tr class="row-even"><td><p>reset_target</p></td>
<td><p>called when a change of the target temperature is requested during a run (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>reset_dt</p></td>
<td><p>is called when a change of the time step is requested during a run (optional)</p></td>
</tr>
<tr class="row-even"><td><p>modify_param</p></td>
<td><p>called when a fix_modify request is executed (optional)</p></td>
</tr>
<tr class="row-odd"><td><p>memory_usage</p></td>
<td><p>report memory used by fix (optional)</p></td>
</tr>
<tr class="row-even"><td><p>thermo</p></td>
<td><p>compute quantities for thermodynamic output (optional)</p></td>
</tr>
</tbody>
</table>
<p>Typically, only a small fraction of these methods are defined for a
particular fix. Setmask is mandatory, as it determines when the fix
will be invoked during the timestep. Fixes that perform time
integration (<em>nve</em>, <em>nvt</em>, <em>npt</em>) implement initial_integrate() and
final_integrate() to perform velocity Verlet updates. Fixes that
constrain forces implement post_force().</p>
<p>Fixes that perform diagnostics typically implement end_of_step(). For
an end_of_step fix, one of your fix arguments must be the variable
“nevery” which is used to determine when to call the fix and you must
set this variable in the constructor of your fix. By convention, this
is the first argument the fix defines (after the ID, group-ID, style).</p>
<p>If the fix needs to store information for each atom that persists from
timestep to timestep, it can manage that memory and migrate the info
with the atoms as they move from processors to processor by
implementing the grow_arrays, copy_arrays, pack_exchange, and
unpack_exchange methods. Similarly, the pack_restart and
unpack_restart methods can be implemented to store information about
the fix in restart files. If you wish an integrator or force
constraint fix to work with rRESPA (see the <a class="reference internal" href="run_style.html"><span class="doc">run_style</span></a>
command), the initial_integrate, post_force_integrate, and
final_integrate_respa methods can be implemented. The thermo method
enables a fix to contribute values to thermodynamic output, as printed
quantities and/or to be summed to the potential energy of the system.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="Modify_compute.html" class="btn btn-neutral float-left" title="3.8. Compute styles" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Modify_command.html" class="btn btn-neutral float-right" title="3.10. Input script command style" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2003-2025 Sandia Corporation.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(false);
});
</script>
</body>
</html>