# 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}$$ .

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¶

integrater = IntegratorRelax(state)


Setting parameters in python

state.shoutEvery=1000
state.dt=0.005


Relax the system

#run 1E5 timesteps
integrater.run(100000)