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

591 lines
44 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>minimize command &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/minimize.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="molecule command" href="molecule.html" />
<link rel="prev" title="min_style cg command" href="min_style.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>
<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"><a class="reference internal" href="Modify.html">3. Modifying &amp; extending LAMMPS</a></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 class="current">
<li class="toctree-l1 current"><a class="reference internal" href="commands_list.html">Commands</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="angle_coeff.html">angle_coeff command</a></li>
<li class="toctree-l2"><a class="reference internal" href="angle_style.html">angle_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="angle_write.html">angle_write command</a></li>
<li class="toctree-l2"><a class="reference internal" href="atom_modify.html">atom_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="atom_style.html">atom_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="balance.html">balance command</a></li>
<li class="toctree-l2"><a class="reference internal" href="bond_coeff.html">bond_coeff command</a></li>
<li class="toctree-l2"><a class="reference internal" href="bond_style.html">bond_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="bond_write.html">bond_write command</a></li>
<li class="toctree-l2"><a class="reference internal" href="boundary.html">boundary command</a></li>
<li class="toctree-l2"><a class="reference internal" href="change_box.html">change_box command</a></li>
<li class="toctree-l2"><a class="reference internal" href="clear.html">clear command</a></li>
<li class="toctree-l2"><a class="reference internal" href="comm_modify.html">comm_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="comm_style.html">comm_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="compute.html">compute command</a></li>
<li class="toctree-l2"><a class="reference internal" href="compute_modify.html">compute_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="create_atoms.html">create_atoms command</a></li>
<li class="toctree-l2"><a class="reference internal" href="create_bonds.html">create_bonds command</a></li>
<li class="toctree-l2"><a class="reference internal" href="create_box.html">create_box command</a></li>
<li class="toctree-l2"><a class="reference internal" href="delete_atoms.html">delete_atoms command</a></li>
<li class="toctree-l2"><a class="reference internal" href="delete_bonds.html">delete_bonds command</a></li>
<li class="toctree-l2"><a class="reference internal" href="dielectric.html">dielectric command</a></li>
<li class="toctree-l2"><a class="reference internal" href="dihedral_coeff.html">dihedral_coeff command</a></li>
<li class="toctree-l2"><a class="reference internal" href="dihedral_style.html">dihedral_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="dihedral_write.html">dihedral_write command</a></li>
<li class="toctree-l2"><a class="reference internal" href="dimension.html">dimension command</a></li>
<li class="toctree-l2"><a class="reference internal" href="displace_atoms.html">displace_atoms command</a></li>
<li class="toctree-l2"><a class="reference internal" href="dynamical_matrix.html">dynamical_matrix command</a></li>
<li class="toctree-l2"><a class="reference internal" href="echo.html">echo command</a></li>
<li class="toctree-l2"><a class="reference internal" href="fix.html">fix command</a></li>
<li class="toctree-l2"><a class="reference internal" href="fix_modify.html">fix_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="fitpod_command.html">fitpod command</a></li>
<li class="toctree-l2"><a class="reference internal" href="geturl.html">geturl command</a></li>
<li class="toctree-l2"><a class="reference internal" href="group.html">group command</a></li>
<li class="toctree-l2"><a class="reference internal" href="group2ndx.html">group2ndx command</a></li>
<li class="toctree-l2"><a class="reference internal" href="group2ndx.html#ndx2group-command">ndx2group command</a></li>
<li class="toctree-l2"><a class="reference internal" href="hyper.html">hyper command</a></li>
<li class="toctree-l2"><a class="reference internal" href="if.html">if command</a></li>
<li class="toctree-l2"><a class="reference internal" href="improper_coeff.html">improper_coeff command</a></li>
<li class="toctree-l2"><a class="reference internal" href="improper_style.html">improper_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="include.html">include command</a></li>
<li class="toctree-l2"><a class="reference internal" href="info.html">info command</a></li>
<li class="toctree-l2"><a class="reference internal" href="jump.html">jump command</a></li>
<li class="toctree-l2"><a class="reference internal" href="kim_commands.html">kim command</a></li>
<li class="toctree-l2"><a class="reference internal" href="kspace_modify.html">kspace_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="kspace_style.html">kspace_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="label.html">label command</a></li>
<li class="toctree-l2"><a class="reference internal" href="labelmap.html">labelmap command</a></li>
<li class="toctree-l2"><a class="reference internal" href="lattice.html">lattice command</a></li>
<li class="toctree-l2"><a class="reference internal" href="log.html">log command</a></li>
<li class="toctree-l2"><a class="reference internal" href="mass.html">mass command</a></li>
<li class="toctree-l2"><a class="reference internal" href="mdi.html">mdi command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_modify.html">min_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_spin.html">min_style spin command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_spin.html#min-style-spin-cg-command">min_style spin/cg command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_spin.html#min-style-spin-lbfgs-command">min_style spin/lbfgs command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html">min_style cg command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html#min-style-hftn-command">min_style hftn command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html#min-style-sd-command">min_style sd command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html#min-style-quickmin-command">min_style quickmin command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html#min-style-fire-command">min_style fire command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html#min-style-spin-command"><span class="xref std std-doc">min_style spin</span> command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html#min-style-spin-cg-command"><span class="xref std std-doc">min_style spin/cg</span> command</a></li>
<li class="toctree-l2"><a class="reference internal" href="min_style.html#min-style-spin-lbfgs-command"><span class="xref std std-doc">min_style spin/lbfgs</span> command</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">minimize command</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#syntax">Syntax</a></li>
<li class="toctree-l3"><a class="reference internal" href="#examples">Examples</a></li>
<li class="toctree-l3"><a class="reference internal" href="#description">Description</a></li>
<li class="toctree-l3"><a class="reference internal" href="#restrictions">Restrictions</a></li>
<li class="toctree-l3"><a class="reference internal" href="#related-commands">Related commands</a></li>
<li class="toctree-l3"><a class="reference internal" href="#default">Default</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="molecule.html">molecule command</a></li>
<li class="toctree-l2"><a class="reference internal" href="neb.html">neb command</a></li>
<li class="toctree-l2"><a class="reference internal" href="neb_spin.html">neb/spin command</a></li>
<li class="toctree-l2"><a class="reference internal" href="neigh_modify.html">neigh_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="neighbor.html">neighbor command</a></li>
<li class="toctree-l2"><a class="reference internal" href="newton.html">newton command</a></li>
<li class="toctree-l2"><a class="reference internal" href="next.html">next command</a></li>
<li class="toctree-l2"><a class="reference internal" href="package.html">package command</a></li>
<li class="toctree-l2"><a class="reference internal" href="pair_coeff.html">pair_coeff command</a></li>
<li class="toctree-l2"><a class="reference internal" href="pair_modify.html">pair_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="pair_style.html">pair_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="pair_write.html">pair_write command</a></li>
<li class="toctree-l2"><a class="reference internal" href="partition.html">partition command</a></li>
<li class="toctree-l2"><a class="reference internal" href="plugin.html">plugin command</a></li>
<li class="toctree-l2"><a class="reference internal" href="prd.html">prd command</a></li>
<li class="toctree-l2"><a class="reference internal" href="print.html">print command</a></li>
<li class="toctree-l2"><a class="reference internal" href="processors.html">processors command</a></li>
<li class="toctree-l2"><a class="reference internal" href="python.html">python command</a></li>
<li class="toctree-l2"><a class="reference internal" href="quit.html">quit command</a></li>
<li class="toctree-l2"><a class="reference internal" href="read_data.html">read_data command</a></li>
<li class="toctree-l2"><a class="reference internal" href="read_dump.html">read_dump command</a></li>
<li class="toctree-l2"><a class="reference internal" href="read_restart.html">read_restart command</a></li>
<li class="toctree-l2"><a class="reference internal" href="region.html">region command</a></li>
<li class="toctree-l2"><a class="reference internal" href="replicate.html">replicate command</a></li>
<li class="toctree-l2"><a class="reference internal" href="rerun.html">rerun command</a></li>
<li class="toctree-l2"><a class="reference internal" href="reset_atoms.html">reset_atoms command</a></li>
<li class="toctree-l2"><a class="reference internal" href="reset_timestep.html">reset_timestep command</a></li>
<li class="toctree-l2"><a class="reference internal" href="restart.html">restart command</a></li>
<li class="toctree-l2"><a class="reference internal" href="run.html">run command</a></li>
<li class="toctree-l2"><a class="reference internal" href="run_style.html">run_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="set.html">set command</a></li>
<li class="toctree-l2"><a class="reference internal" href="shell.html">shell command</a></li>
<li class="toctree-l2"><a class="reference internal" href="special_bonds.html">special_bonds command</a></li>
<li class="toctree-l2"><a class="reference internal" href="suffix.html">suffix command</a></li>
<li class="toctree-l2"><a class="reference internal" href="tad.html">tad command</a></li>
<li class="toctree-l2"><a class="reference internal" href="temper.html">temper command</a></li>
<li class="toctree-l2"><a class="reference internal" href="temper_grem.html">temper/grem command</a></li>
<li class="toctree-l2"><a class="reference internal" href="temper_npt.html">temper/npt command</a></li>
<li class="toctree-l2"><a class="reference internal" href="thermo.html">thermo command</a></li>
<li class="toctree-l2"><a class="reference internal" href="thermo_modify.html">thermo_modify command</a></li>
<li class="toctree-l2"><a class="reference internal" href="thermo_style.html">thermo_style command</a></li>
<li class="toctree-l2"><a class="reference internal" href="third_order.html">third_order command</a></li>
<li class="toctree-l2"><a class="reference internal" href="timer.html">timer command</a></li>
<li class="toctree-l2"><a class="reference internal" href="timestep.html">timestep command</a></li>
<li class="toctree-l2"><a class="reference internal" href="uncompute.html">uncompute command</a></li>
<li class="toctree-l2"><a class="reference internal" href="undump.html">undump command</a></li>
<li class="toctree-l2"><a class="reference internal" href="unfix.html">unfix command</a></li>
<li class="toctree-l2"><a class="reference internal" href="units.html">units command</a></li>
<li class="toctree-l2"><a class="reference internal" href="variable.html">variable command</a></li>
<li class="toctree-l2"><a class="reference internal" href="velocity.html">velocity command</a></li>
<li class="toctree-l2"><a class="reference internal" href="write_coeff.html">write_coeff command</a></li>
<li class="toctree-l2"><a class="reference internal" href="write_data.html">write_data command</a></li>
<li class="toctree-l2"><a class="reference internal" href="write_dump.html">write_dump command</a></li>
<li class="toctree-l2"><a class="reference internal" href="write_restart.html">write_restart command</a></li>
</ul>
</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="commands_list.html">Commands</a></li>
<li class="breadcrumb-item active">minimize command</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="min_style.html" class="btn btn-neutral float-left" title="min_style cg command" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="molecule.html" class="btn btn-neutral float-right" title="molecule command" 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="minimize-command">
<span id="index-1"></span><span id="index-0"></span><h1>minimize command<a class="headerlink" href="#minimize-command" title="Link to this heading"></a></h1>
<p>Accelerator Variant: minimize/kk</p>
<section id="syntax">
<h2>Syntax<a class="headerlink" href="#syntax" title="Link to this heading"></a></h2>
<div class="highlight-LAMMPS notranslate"><div class="highlight"><pre><span></span><span class="k">minimize</span><span class="w"> </span><span class="n">etol</span><span class="w"> </span><span class="n">ftol</span><span class="w"> </span><span class="n">maxiter</span><span class="w"> </span><span class="n">maxeval</span>
</pre></div>
</div>
<ul class="simple">
<li><p>etol = stopping tolerance for energy (unitless)</p></li>
<li><p>ftol = stopping tolerance for force (force units)</p></li>
<li><p>maxiter = max iterations of minimizer</p></li>
<li><p>maxeval = max number of force/energy evaluations</p></li>
</ul>
</section>
<section id="examples">
<h2>Examples<a class="headerlink" href="#examples" title="Link to this heading"></a></h2>
<div class="highlight-LAMMPS notranslate"><div class="highlight"><pre><span></span><span class="k">minimize</span><span class="w"> </span><span class="m">1.0e-4</span><span class="w"> </span><span class="m">1.0e-6</span><span class="w"> </span><span class="m">100</span><span class="w"> </span><span class="m">1000</span>
<span class="k">minimize</span><span class="w"> </span><span class="m">0.0</span><span class="w"> </span><span class="m">1.0e-8</span><span class="w"> </span><span class="m">1000</span><span class="w"> </span><span class="m">100000</span>
</pre></div>
</div>
</section>
<section id="description">
<h2>Description<a class="headerlink" href="#description" title="Link to this heading"></a></h2>
<p>Perform an energy minimization of the system, by iteratively adjusting
atom coordinates. Iterations are terminated when one of the stopping
criteria is satisfied. At that point the configuration will hopefully
be in a local potential energy minimum. More precisely, the
configuration should approximate a critical point for the objective
function (see below), which may or may not be a local minimum.</p>
<p>The minimization algorithm used is set by the <a class="reference internal" href="min_style.html"><span class="doc">min_style</span></a> command. Other options are set by the <a class="reference internal" href="min_modify.html"><span class="doc">min_modify</span></a> command. Minimize commands can be interspersed with
<a class="reference internal" href="run.html"><span class="doc">run</span></a> commands to alternate between relaxation and dynamics.
The minimizers bound the distance atoms may move in one iteration, so
that you can relax systems with highly overlapped atoms (large energies
and forces) by pushing the atoms off of each other.</p>
<div class="note admonition">
<p class="admonition-title">Neighbor list update settings</p>
<p>The distance that atoms can move during individual minimization steps
can be quite large, especially at the beginning of a minimization.
Thus <a class="reference internal" href="neigh_modify.html"><span class="doc">neighbor list settings</span></a> of <em>every = 1</em> and
<em>delay = 0</em> are <strong>required</strong>. This may be combined with either
<em>check = no</em> (always update the neighbor list) or <em>check = yes</em> (only
update the neighbor list if at least one atom has moved more than
half the <a class="reference internal" href="neighbor.html"><span class="doc">neighbor list skin</span></a> distance since the last
reneighboring). Using <em>check = yes</em> is recommended since it avoids
unneeded reneighboring steps when the system is closer to the minimum
and thus atoms move only small distances. Using <em>check = no</em> may be
required for debugging or when coupling LAMMPS with external codes
that require a predictable sequence of neighbor list updates.</p>
<p>If the settings are <strong>not</strong> <em>every = 1</em> and <em>delay = 0</em>, LAMMPS will
temporarily apply a <a class="reference internal" href="neigh_modify.html"><span class="doc">neigh_modify every 1 delay 0 check yes</span></a> setting during the minimization and restore the
original setting at the end of the minimization. A corresponding
message will be printed to the screen and log file, if this happens.</p>
</div>
<p>Alternate means of relaxing a system are to run dynamics with a small or
<a class="reference internal" href="fix_nve_limit.html"><span class="doc">limited timestep</span></a>. Or dynamics can be run using
<a class="reference internal" href="fix_viscous.html"><span class="doc">fix viscous</span></a> to impose a damping force that slowly
drains all kinetic energy from the system. The <a class="reference internal" href="pair_soft.html"><span class="doc">pair_style soft</span></a> potential can be used to un-overlap atoms while running
dynamics.</p>
<p>Note that you can minimize some atoms in the system while holding the
coordinates of other atoms fixed by applying <a class="reference internal" href="fix_setforce.html"><span class="doc">fix setforce 0.0 0.0
0.0</span></a> to the other atoms. See a more detailed discussion
of <a class="reference internal" href="#fix-minimize"><span class="std std-ref">using fixes while minimizing below</span></a>.</p>
<p>The <a class="reference internal" href="min_style.html"><span class="doc">minimization styles</span></a> <em>cg</em>, <em>sd</em>, and <em>hftn</em>
involves an outer iteration loop which sets the search direction along
which atom coordinates are changed. An inner iteration is then
performed using a line search algorithm. The line search typically
evaluates forces and energies several times to set new coordinates.
Currently, a backtracking algorithm is used which may not be optimal
in terms of the number of force evaluations performed, but appears to
be more robust than previous line searches we have tried. The
backtracking method is described in Nocedal and Wrights Numerical
Optimization (Procedure 3.1 on p 41).</p>
<p>The <a class="reference internal" href="min_style.html"><span class="doc">minimization styles</span></a> <em>quickmin</em>, <em>fire</em> and
<em>fire/old</em> perform damped dynamics using an Euler integration step. Thus
they require a <a class="reference internal" href="timestep.html"><span class="doc">timestep</span></a> be defined.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The damped dynamic minimizer algorithms will use the timestep you
have defined via the <a class="reference internal" href="timestep.html"><span class="doc">timestep</span></a> command or its
default value. Often they will converge more quickly if you use a
timestep about 10x larger than you would normally use for regular
molecular dynamics simulations.</p>
</div>
<hr class="docutils" />
<p>In all cases, the objective function being minimized is the total
potential energy of the system as a function of the N atom
coordinates:</p>
<div class="math notranslate nohighlight">
\[\begin{split}E(r_1,r_2, \ldots ,r_N) = &amp; \sum_{i,j} E_{\it pair}(r_i,r_j) +
\sum_{ij} E_{\it bond}(r_i,r_j) +
\sum_{ijk} E_{\it angle}(r_i,r_j,r_k) + \\
&amp; \sum_{ijkl} E_{\it dihedral}(r_i,r_j,r_k,r_l) +
\sum_{ijkl} E_{\it improper}(r_i,r_j,r_k,r_l) +
\sum_i E_{\it fix}(r_i)\end{split}\]</div>
<p>where the first term is the sum of all non-bonded <a class="reference internal" href="pair_style.html"><span class="doc">pairwise
interactions</span></a> including <a class="reference internal" href="kspace_style.html"><span class="doc">long-range Coulombic
interactions</span></a>, the second through fifth terms are <a class="reference internal" href="bond_style.html"><span class="doc">bond</span></a>, <a class="reference internal" href="angle_style.html"><span class="doc">angle</span></a>, <a class="reference internal" href="dihedral_style.html"><span class="doc">dihedral</span></a>, and <a class="reference internal" href="improper_style.html"><span class="doc">improper</span></a> interactions
respectively, and the last term is energy due to <a class="reference internal" href="fix.html"><span class="doc">fixes</span></a>
which can act as constraints or apply force to atoms, such as through
interaction with a wall. See the discussion below about how fix
commands affect minimization.</p>
<p>The starting point for the minimization is the current configuration
of the atoms.</p>
<hr class="docutils" />
<p>The minimization procedure stops if any of several criteria are met:</p>
<ul class="simple">
<li><p>the change in energy between outer iterations is less than <em>etol</em></p></li>
<li><p>the 2-norm (length) of the global force vector is less than the <em>ftol</em></p></li>
<li><p>the line search fails because the step distance backtracks to 0.0</p></li>
<li><p>the number of outer iterations or timesteps exceeds <em>maxiter</em></p></li>
<li><p>the number of total force evaluations exceeds <em>maxeval</em></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>the <a class="reference internal" href="min_style.html"><span class="doc">minimization style</span></a> <em>spin</em>,
<em>spin/cg</em>, and <em>spin/lbfgs</em> replace
the force tolerance <em>ftol</em> by a torque tolerance.
The minimization procedure stops if the 2-norm (length) of the torque vector on atom
(defined as the cross product between the
atomic spin and its precession vectors omega) is less than <em>ftol</em>,
or if any of the other criteria are met. Torque have the same units as the energy.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You can also use the <a class="reference internal" href="fix_halt.html"><span class="doc">fix halt</span></a> command to specify
a general criterion for exiting a minimization, that is a
calculation performed on the state of the current system, as
defined by an <a class="reference internal" href="variable.html"><span class="doc">equal-style variable</span></a>.</p>
</div>
<p>For the first criterion, the specified energy tolerance <em>etol</em> is
unitless; it is met when the energy change between successive
iterations divided by the energy magnitude is less than or equal to
the tolerance. For example, a setting of 1.0e-4 for <em>etol</em> means an
energy tolerance of one part in 10^4. For the damped dynamics
minimizers this check is not performed for a few steps after
velocities are reset to 0, otherwise the minimizer would prematurely
converge.</p>
<p>For the second criterion, the specified force tolerance <em>ftol</em> is in
force units, since it is the length of the global force vector for all
atoms, e.g. a vector of size 3N for N atoms. Since many of the
components will be near zero after minimization, you can think of
<em>ftol</em> as an upper bound on the final force on any component of any
atom. For example, a setting of 1.0e-4 for <em>ftol</em> means no x, y, or z
component of force on any atom will be larger than 1.0e-4 (in force
units) after minimization.</p>
<p>Either or both of the <em>etol</em> and <em>ftol</em> values can be set to 0.0, in
which case some other criterion will terminate the minimization.</p>
<p>During a minimization, the outer iteration count is treated as a
timestep. Output is triggered by this timestep, e.g. thermodynamic
output or dump and restart files.</p>
<p>Using the <a class="reference internal" href="thermo_style.html"><span class="doc">thermo_style custom</span></a> command with the
<em>fmax</em> or <em>fnorm</em> keywords can be useful for monitoring the progress
of the minimization. Note that these outputs will be calculated only
from forces on the atoms, and will not include any extra degrees of
freedom, such as from the <a class="reference internal" href="fix_box_relax.html"><span class="doc">fix box/relax</span></a> command.</p>
<p>Following minimization, a statistical summary is printed that lists
which convergence criterion caused the minimizer to stop, as well as
information about the energy, force, final line search, and iteration
counts. An example is as follows:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Minimization stats:
Stopping criterion = max iterations
Energy initial, next-to-last, final =
-0.626828169302 -2.82642039062 -2.82643549739
Force two-norm initial, final = 2052.1 91.9642
Force max component initial, final = 346.048 9.78056
Final line search alpha, max atom move = 2.23899e-06 2.18986e-05
Iterations, force evaluations = 2000 12724
</pre></div>
</div>
<p>The 3 energy values are for before and after the minimization and on
the next-to-last iteration. This is what the <em>etol</em> parameter checks.</p>
<p>The two-norm force values are the length of the global force vector
before and after minimization. This is what the <em>ftol</em> parameter
checks.</p>
<p>The max-component force values are the absolute value of the largest
component (x,y,z) in the global force vector, i.e. the infinity-norm
of the force vector.</p>
<p>The alpha parameter for the line-search, when multiplied by the max
force component (on the last iteration), gives the max distance any
atom moved during the last iteration. Alpha will be 0.0 if the line
search could not reduce the energy. Even if alpha is non-zero, if the
“max atom move” distance is tiny compared to typical atom coordinates,
then it is possible the last iteration effectively caused no atom
movement and thus the evaluated energy did not change and the
minimizer terminated. Said another way, even with non-zero forces,
its possible the effect of those forces is to move atoms a distance
less than machine precision, so that the energy cannot be further
reduced.</p>
<p>The iterations and force evaluation values are what is checked by the
<em>maxiter</em> and <em>maxeval</em> parameters.</p>
<hr class="docutils" />
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>There are several force fields in LAMMPS which have discontinuities
or other approximations which may prevent you from performing an
energy minimization to tight tolerances. For example, you should use
a <a class="reference internal" href="pair_style.html"><span class="doc">pair style</span></a> that goes to 0.0 at the cutoff
distance when performing minimization (even if you later change it
when running dynamics). If you do not do this, the total energy of
the system will have discontinuities when the relative distance
between any pair of atoms changes from cutoff <em>plus</em> epsilon to
cutoff <em>minus</em> epsilon and the minimizer may thus behave poorly.
Some of the many-body potentials use splines and other internal
cutoffs that inherently have this problem. The <a class="reference internal" href="kspace_style.html"><span class="doc">long-range
Coulombic styles</span></a> (PPPM, Ewald) are approximate to
within the user-specified tolerance, which means their energy and
forces may not agree to a higher precision than the Kspace-specified
tolerance. This agreement is further reduced when using tabulation
to speed up the computation of the real-space part of the Coulomb
interactions, which is enabled by default. In all these cases, the
minimizer may give up and stop before finding a minimum to the
specified energy or force tolerance.</p>
</div>
<p>Note that a cutoff Lennard-Jones potential (and others) can be shifted
so that its energy is 0.0 at the cutoff via the <a class="reference internal" href="pair_modify.html"><span class="doc">pair_modify</span></a> command. See the doc pages for individual <a class="reference internal" href="pair_style.html"><span class="doc">pair
styles</span></a> for details. Note that most Coulombic potentials
have a cutoff, unless versions with a long-range component are used
(e.g. <a class="reference internal" href="pair_lj_cut_coul.html"><span class="doc">pair_style lj/cut/coul/long</span></a>) or some
other damping/smoothing schemes are used. The CHARMM potentials go to
0.0 at the cutoff (e.g. <a class="reference internal" href="pair_charmm.html"><span class="doc">pair_style lj/charmm/coul/charmm</span></a>), as do the GROMACS potentials (e.g. <a class="reference internal" href="pair_gromacs.html"><span class="doc">pair_style
lj/gromacs</span></a>).</p>
<p>If a soft potential (<a class="reference internal" href="pair_soft.html"><span class="doc">pair_style soft</span></a>) is used the
Astop value is used for the prefactor (no time dependence).</p>
<p id="fix-minimize">The <a class="reference internal" href="fix_box_relax.html"><span class="doc">fix box/relax</span></a> command can be used to apply an
external pressure to the simulation box and allow it to shrink/expand
during the minimization.</p>
<p>Only a few other fixes (typically those that add forces) are invoked
during minimization. See the doc pages for individual <a class="reference internal" href="fix.html"><span class="doc">fix</span></a>
commands to see which ones are relevant. Current examples of fixes
that can be used include:</p>
<ul class="simple">
<li><p><a class="reference internal" href="fix_addforce.html"><span class="doc">fix addforce</span></a></p></li>
<li><p><a class="reference internal" href="fix_addtorque.html"><span class="doc">fix addtorque</span></a></p></li>
<li><p><a class="reference internal" href="fix_efield.html"><span class="doc">fix efield</span></a></p></li>
<li><p><a class="reference internal" href="fix_enforce2d.html"><span class="doc">fix enforce2d</span></a></p></li>
<li><p><a class="reference internal" href="fix_indent.html"><span class="doc">fix indent</span></a></p></li>
<li><p><a class="reference internal" href="fix_lineforce.html"><span class="doc">fix lineforce</span></a></p></li>
<li><p><a class="reference internal" href="fix_planeforce.html"><span class="doc">fix planeforce</span></a></p></li>
<li><p><a class="reference internal" href="fix_setforce.html"><span class="doc">fix setforce</span></a></p></li>
<li><p><a class="reference internal" href="fix_spring.html"><span class="doc">fix spring</span></a></p></li>
<li><p><a class="reference internal" href="fix_spring_self.html"><span class="doc">fix spring/self</span></a></p></li>
<li><p><a class="reference internal" href="fix_viscous.html"><span class="doc">fix viscous</span></a></p></li>
<li><p><a class="reference internal" href="fix_wall.html"><span class="doc">fix wall</span></a></p></li>
<li><p><a class="reference internal" href="fix_wall_region.html"><span class="doc">fix wall/region</span></a></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Some fixes which are invoked during minimization have an
associated potential energy. For that energy to be included in the
total potential energy of the system (the quantity being minimized),
you MUST enable the <a class="reference internal" href="fix_modify.html"><span class="doc">fix_modify</span></a> <em>energy</em> option for
that fix. The doc pages for individual <a class="reference internal" href="fix.html"><span class="doc">fix</span></a> commands
specify if this should be done.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The minimizers in LAMMPS do not allow for bonds (or angles, etc)
to be held fixed while atom coordinates are being relaxed, e.g. via
<a class="reference internal" href="fix_shake.html"><span class="doc">fix shake</span></a> or <a class="reference internal" href="fix_rigid.html"><span class="doc">fix rigid</span></a>. See more
info in the Restrictions section below.</p>
</div>
<hr class="docutils" />
<p>Styles with a <em>gpu</em>, <em>intel</em>, <em>kk</em>, <em>omp</em>, or <em>opt</em> suffix are
functionally the same as the corresponding style without the suffix.
They have been optimized to run faster, depending on your available
hardware, as discussed on the <a class="reference internal" href="Speed_packages.html"><span class="doc">Accelerator packages</span></a>
page. The accelerated styles take the same arguments and should
produce the same results, except for round-off and precision issues.</p>
<p>These accelerated styles are part of the GPU, INTEL, KOKKOS,
OPENMP, and OPT packages, respectively. They are only enabled if
LAMMPS was built with those packages. See the <a class="reference internal" href="Build_package.html"><span class="doc">Build package</span></a> page for more info.</p>
<p>You can specify the accelerated styles explicitly in your input script
by including their suffix, or you can use the <a class="reference internal" href="Run_options.html"><span class="doc">-suffix command-line switch</span></a> when you invoke LAMMPS, or you can use the
<a class="reference internal" href="suffix.html"><span class="doc">suffix</span></a> command in your input script.</p>
<p>See the <a class="reference internal" href="Speed_packages.html"><span class="doc">Accelerator packages</span></a> page for more
instructions on how to use the accelerated styles effectively.</p>
</section>
<hr class="docutils" />
<section id="restrictions">
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Link to this heading"></a></h2>
<p>Features that are not yet implemented are listed here, in case someone
knows how they could be coded:</p>
<p>It is an error to use <a class="reference internal" href="fix_shake.html"><span class="doc">fix shake</span></a> with minimization
because it turns off bonds that should be included in the potential
energy of the system. The effect of a fix shake can be approximated
during a minimization by using stiff spring constants for the bonds
and/or angles that would normally be constrained by the SHAKE
algorithm.</p>
<p><a class="reference internal" href="fix_rigid.html"><span class="doc">Fix rigid</span></a> is also not supported by minimization. It
is not an error to have it defined, but the energy minimization will
not keep the defined body(s) rigid during the minimization. Note that
if bonds, angles, etc internal to a rigid body have been turned off
(e.g. via <a class="reference internal" href="neigh_modify.html"><span class="doc">neigh_modify exclude</span></a>), they will not
contribute to the potential energy which is probably not what is
desired.</p>
<p>Pair potentials that produce torque on a particle (e.g. <a class="reference internal" href="pair_gran.html"><span class="doc">granular potentials</span></a> or the <a class="reference internal" href="pair_gayberne.html"><span class="doc">GayBerne potential</span></a> for ellipsoidal particles) are not
relaxed by a minimization. More specifically, radial relaxations are
induced, but no rotations are induced by a minimization, so such a
system will not fully relax.</p>
</section>
<section id="related-commands">
<h2>Related commands<a class="headerlink" href="#related-commands" title="Link to this heading"></a></h2>
<p><a class="reference internal" href="min_modify.html"><span class="doc">min_modify</span></a>, <a class="reference internal" href="min_style.html"><span class="doc">min_style</span></a>,
<a class="reference internal" href="run_style.html"><span class="doc">run_style</span></a></p>
</section>
<section id="default">
<h2>Default<a class="headerlink" href="#default" title="Link to this heading"></a></h2>
<p>none</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="min_style.html" class="btn btn-neutral float-left" title="min_style cg command" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="molecule.html" class="btn btn-neutral float-right" title="molecule command" 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>