git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@16053 f3b2605a-c512-4ea7-a41b...
[lammps.git] / doc / src / minimize.txt
blob2de23310b87ce4e321c7e9b55cc46b7dfd8d3858
1 "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
3 :link(lws,http://lammps.sandia.gov)
4 :link(ld,Manual.html)
5 :link(lc,Section_commands.html#comm)
7 :line
9 minimize command :h3
11 [Syntax:]
13 minimize etol ftol maxiter maxeval :pre
15 etol = stopping tolerance for energy (unitless)
16 ftol = stopping tolerance for force (force units)
17 maxiter = max iterations of minimizer
18 maxeval = max number of force/energy evaluations :ul
20 [Examples:]
22 minimize 1.0e-4 1.0e-6 100 1000
23 minimize 0.0 1.0e-8 1000 100000 :pre
25 [Description:]
27 Perform an energy minimization of the system, by iteratively adjusting
28 atom coordinates.  Iterations are terminated when one of the stopping
29 criteria is satisfied.  At that point the configuration will hopefully
30 be in local potential energy minimum.  More precisely, the
31 configuration should approximate a critical point for the objective
32 function (see below), which may or may not be a local minimum.
34 The minimization algorithm used is set by the
35 "min_style"_min_style.html command.  Other options are set by the
36 "min_modify"_min_modify.html command.  Minimize commands can be
37 interspersed with "run"_run.html commands to alternate between
38 relaxation and dynamics.  The minimizers bound the distance atoms move
39 in one iteration, so that you can relax systems with highly overlapped
40 atoms (large energies and forces) by pushing the atoms off of each
41 other.
43 Alternate means of relaxing a system are to run dynamics with a small
44 or "limited timestep"_fix_nve_limit.html.  Or dynamics can be run
45 using "fix viscous"_fix_viscous.html to impose a damping force that
46 slowly drains all kinetic energy from the system.  The "pair_style
47 soft"_pair_soft.html potential can be used to un-overlap atoms while
48 running dynamics.
50 Note that you can minimize some atoms in the system while holding the
51 coordiates of other atoms fixed by applying "fix
52 setforce"_fix_setforce.html to the other atoms.  See a fuller
53 discussion of using fixes while minimizing below.
55 The "minimization styles"_min_style.html {cg}, {sd}, and {hftn}
56 involves an outer iteration loop which sets the search direction along
57 which atom coordinates are changed.  An inner iteration is then
58 performed using a line search algorithm.  The line search typically
59 evaluates forces and energies several times to set new coordinates.
60 Currently, a backtracking algorithm is used which may not be optimal
61 in terms of the number of force evaulations performed, but appears to
62 be more robust than previous line searches we've tried.  The
63 backtracking method is described in Nocedal and Wright's Numerical
64 Optimization (Procedure 3.1 on p 41).
66 The "minimization styles"_min_style.html {quickmin} and {fire} perform
67 damped dynamics using an Euler integration step.  Thus they require a
68 "timestep"_timestep.html be defined.
70 NOTE: The damped dynamic minimizers use whatever timestep you have
71 defined via the "timestep"_timestep.html command.  Often they will
72 converge more quickly if you use a timestep about 10x larger than you
73 would normally use for dynamics simulations.
75 :line
77 In all cases, the objective function being minimized is the total
78 potential energy of the system as a function of the N atom
79 coordinates:
81 :c,image(Eqs/min_energy.jpg)
83 where the first term is the sum of all non-bonded "pairwise
84 interactions"_pair_style.html including "long-range Coulombic
85 interactions"_kspace_style.html, the 2nd thru 5th terms are
86 "bond"_bond_style.html, "angle"_angle_style.html,
87 "dihedral"_dihedral_style.html, and "improper"_improper_style.html
88 interactions respectively, and the last term is energy due to
89 "fixes"_fix.html which can act as constraints or apply force to atoms,
90 such as thru interaction with a wall.  See the discussion below about
91 how fix commands affect minimization.
93 The starting point for the minimization is the current configuration
94 of the atoms.
96 :line
98 The minimization procedure stops if any of several criteria are met:
100 the change in energy between outer iterations is less than {etol}
101 the 2-norm (length) of the global force vector is less than the {ftol}
102 the line search fails because the step distance backtracks to 0.0
103 the number of outer iterations or timesteps exceeds {maxiter}
104 the number of total force evaluations exceeds {maxeval} :ul
106 NOTE: You can also use the "fix halt"_fix_halt.html command to specify
107 a general criterion for exiting a minimization, that is a calculation
108 performed on the state of the current system, as defined by an
109 "equal-style variable"_variable.html.
111 For the first criterion, the specified energy tolerance {etol} is
112 unitless; it is met when the energy change between successive
113 iterations divided by the energy magnitude is less than or equal to
114 the tolerance.  For example, a setting of 1.0e-4 for {etol} means an
115 energy tolerance of one part in 10^4.  For the damped dynamics
116 minimizers this check is not performed for a few steps after
117 velocities are reset to 0, otherwise the minimizer would prematurely
118 converge.
120 For the second criterion, the specified force tolerance {ftol} is in
121 force units, since it is the length of the global force vector for all
122 atoms, e.g. a vector of size 3N for N atoms.  Since many of the
123 components will be near zero after minimization, you can think of
124 {ftol} as an upper bound on the final force on any component of any
125 atom.  For example, a setting of 1.0e-4 for {ftol} means no x, y, or z
126 component of force on any atom will be larger than 1.0e-4 (in force
127 units) after minimization.
129 Either or both of the {etol} and {ftol} values can be set to 0.0, in
130 which case some other criterion will terminate the minimization.
132 During a minimization, the outer iteration count is treated as a
133 timestep.  Output is triggered by this timestep, e.g. thermodynamic
134 output or dump and restart files.
136 Using the "thermo_style custom"_thermo_style.html command with the
137 {fmax} or {fnorm} keywords can be useful for monitoring the progress
138 of the minimization.  Note that these outputs will be calculated only
139 from forces on the atoms, and will not include any extra degrees of
140 freedom, such as from the "fix box/relax"_fix_box_relax.html command.
142 Following minimization, a statistical summary is printed that lists
143 which convergence criterion caused the minimizer to stop, as well as
144 information about the energy, force, final line search, and
145 iteration counts.  An example is as follows:
147 Minimization stats:
148   Stopping criterion = max iterations
149   Energy initial, next-to-last, final =
150        -0.626828169302     -2.82642039062     -2.82643549739
151   Force two-norm initial, final = 2052.1 91.9642
152   Force max component initial, final = 346.048 9.78056
153   Final line search alpha, max atom move = 2.23899e-06 2.18986e-05
154   Iterations, force evaluations = 2000 12724 :pre
156 The 3 energy values are for before and after the minimization and on
157 the next-to-last iteration.  This is what the {etol} parameter checks.
159 The two-norm force values are the length of the global force vector
160 before and after minimization.  This is what the {ftol} parameter
161 checks.
163 The max-component force values are the absolute value of the largest
164 component (x,y,z) in the global force vector, i.e. the infinity-norm
165 of the force vector.
167 The alpha parameter for the line-search, when multiplied by the max
168 force component (on the last iteration), gives the max distance any
169 atom moved during the last iteration.  Alpha will be 0.0 if the line
170 search could not reduce the energy.  Even if alpha is non-zero, if the
171 "max atom move" distance is tiny compared to typical atom coordinates,
172 then it is possible the last iteration effectively caused no atom
173 movement and thus the evaluated energy did not change and the
174 minimizer terminated.  Said another way, even with non-zero forces,
175 it's possible the effect of those forces is to move atoms a distance
176 less than machine precision, so that the energy cannot be further
177 reduced.
179 The iterations and force evaluation values are what is checked by the
180 {maxiter} and {maxeval} parameters.
182 :line
184 NOTE: There are several force fields in LAMMPS which have
185 discontinuities or other approximations which may prevent you from
186 performing an energy minimization to high tolerances.  For example,
187 you should use a "pair style"_pair_style.html that goes to 0.0 at the
188 cutoff distance when performing minimization (even if you later change
189 it when running dynamics).  If you do not do this, the total energy of
190 the system will have discontinuities when the relative distance
191 between any pair of atoms changes from cutoff+epsilon to
192 cutoff-epsilon and the minimizer may behave poorly.  Some of the
193 manybody potentials use splines and other internal cutoffs that
194 inherently have this problem.  The "long-range Coulombic
195 styles"_kspace_style.html (PPPM, Ewald) are approximate to within the
196 user-specified tolerance, which means their energy and forces may not
197 agree to a higher precision than the Kspace-specified tolerance.  In
198 all these cases, the minimizer may give up and stop before finding a
199 minimum to the specified energy or force tolerance.
201 Note that a cutoff Lennard-Jones potential (and others) can be shifted
202 so that its energy is 0.0 at the cutoff via the
203 "pair_modify"_pair_modify.html command.  See the doc pages for
204 inidividual "pair styles"_pair_style.html for details.  Note that
205 Coulombic potentials always have a cutoff, unless versions with a
206 long-range component are used (e.g. "pair_style
207 lj/cut/coul/long"_pair_lj.html).  The CHARMM potentials go to 0.0 at
208 the cutoff (e.g. "pair_style lj/charmm/coul/charmm"_pair_charmm.html),
209 as do the GROMACS potentials (e.g. "pair_style
210 lj/gromacs"_pair_gromacs.html).
212 If a soft potential ("pair_style soft"_pair_soft.html) is used the
213 Astop value is used for the prefactor (no time dependence).
215 The "fix box/relax"_fix_box_relax.html command can be used to apply an
216 external pressure to the simulation box and allow it to shrink/expand
217 during the minimization.
219 Only a few other fixes (typically those that apply force constraints)
220 are invoked during minimization.  See the doc pages for individual
221 "fix"_fix.html commands to see which ones are relevant.  Current
222 examples of fixes that can be used include:
224 "fix addforce"_fix_addforce.html
225 "fix addtorque"_fix_addtorque.html
226 "fix efield"_fix_efield.html
227 "fix enforce2d"_fix_enforce2d.html
228 "fix indent"_fix_indent.html
229 "fix lineforce"_fix_lineforce.html
230 "fix planeforce"_fix_planeforce.html
231 "fix setforce"_fix_setforce.html
232 "fix spring"_fix_spring.html
233 "fix spring/self"_fix_spring_self.html
234 "fix viscous"_fix_viscous.html
235 "fix wall"_fix_wall.html
236 "fix wall/region"_fix_wall_region.html :ul
238 NOTE: Some fixes which are invoked during minimization have an
239 associated potential energy.  For that energy to be included in the
240 total potential energy of the system (the quantity being minimized),
241 you MUST enable the "fix_modify"_fix_modify.html {energy} option for
242 that fix.  The doc pages for individual "fix"_fix.html commands
243 specify if this should be done.
245 :line
247 [Restrictions:]
249 Features that are not yet implemented are listed here, in case someone
250 knows how they could be coded:
252 It is an error to use "fix shake"_fix_shake.html with minimization
253 because it turns off bonds that should be included in the potential
254 energy of the system.  The effect of a fix shake can be approximated
255 during a minimization by using stiff spring constants for the bonds
256 and/or angles that would normally be constrained by the SHAKE
257 algorithm.
259 "Fix rigid"_fix_rigid.html is also not supported by minimization.  It
260 is not an error to have it defined, but the energy minimization will
261 not keep the defined body(s) rigid during the minimization.  Note that
262 if bonds, angles, etc internal to a rigid body have been turned off
263 (e.g. via "neigh_modify exclude"_neigh_modify.html), they will not
264 contribute to the potential energy which is probably not what is
265 desired.
267 Pair potentials that produce torque on a particle (e.g. "granular
268 potentials"_pair_gran.html or the "GayBerne
269 potential"_pair_gayberne.html for ellipsoidal particles) are not
270 relaxed by a minimization.  More specifically, radial relaxations are
271 induced, but no rotations are induced by a minimization, so such a
272 system will not fully relax.
274 [Related commands:]
276 "min_modify"_min_modify.html, "min_style"_min_style.html,
277 "run_style"_run_style.html
279 [Default:] none