Intergrator FIRE relaxation

Overview

Integrating state via FIRE algorithm – Fast Internal Relaxation Engine see (Erik Bitzek et al. PRL 97, 170201, (2006))

FIRE algorithm:

  1. MD: calculate \({\bf r}\), \({\bf f}=-\nabla E(\bf r)\), and \({\bf v}\) using any common MD integrator; check for convergence.
  2. F1: calculate \(P = F \cdot v\).
  3. F2: set \({\bf v} \rightarrow (1-\alpha) {\bf v}+ \alpha \hat{\bf f} \left| {\bf v}\right|\).
  4. F3: if \(P > 0\) and the number of steps since \(P\) was negative is larger than \(N_{\rm min}\), increase the time step \(\Delta t \rightarrow min\left(\Delta t \,f_{\rm inc}; \Delta t_{\rm max}\right)\) and decrease \(\alpha\rightarrow \alpha\, f_\alpha\).
  5. F4: if \(P \leq 0\), decrease time step \(\Delta t \rightarrow \Delta t\,f_{\rm dec}\), freeze the system \({\bf v} = 0\) and set \(\alpha\) back to \(\alpha_{\rm start}\) .
  6. F5: return to MD.

where \({\bf r}\) is vector of coordinates, \({\bf v}\) is vector of velocities, \({\bf f}_i\) is vector of forces, and \(\Delta t\) is timestep size. Algorithm parameters are: \(\alpha_{\rm start}, f_\alpha, f_{\rm inc}, f_{\rm dec}, N_{\rm min}, \Delta t_{\rm max}\)

Python Member Functions

Constructor

IntegratorRelax(state=...)

Arguments

state
state object.

Setting parameters from within the Python environment is done with set_params.

set_params(alphaInit=..., alphaShrink=..., dtGrow=..., dtShrink=..., delay=..., dtMax_mult=...)

Arguments

alphaInit
initial value of \(\alpha\). Corresponds to \(\alpha_{\rm start}\) in algorithm description.
alphaShrink
corresponds to \(f_\alpha\) in algorithm description.
dtGrow
corresponds to \(f_{\rm inc}\) in algorithm description.
dtShrink
corresponds to \(f_{\rm dec}\) in algorithm description.
delay
corresponds to \(N_{\rm min}\) in algorithm description.
dtMax_mult
maximum value of \(\Delta t\) relative to state.dt. Corresponds to \(\Delta t_{\rm max}/\Delta t_{\rm initial}\) in algorithm description.

Integrating state is done with run.

Default values:

alphaInit = 0.1

alphaShrink = 0.99

dtGrow = 1.1

dtShrink = 0.5

delay = 5

dtMax_mult = 10

run(numTurns=...,fTol=...)

Arguments

numTurns
number of timestep to make.
fTol
required force tolerance. When \(\left|{\bf f}\right|<fTol\), run returns.

Examples

Adding the integrator

integrater = IntegratorRelax(state)

Setting parameters in python

state.shoutEvery=1000
state.dt=0.005

Relax the system

#run 1E5 timesteps
integrater.run(100000)

Table Of Contents

Previous topic

Intergrator Verlet

Next topic

LAMMPS reader

This Page