# Equilibration

Rule of thumb: All Monte Carlo simulations have to be equilibrated before taking measurements.

## Example: Classical Monte Carlo (local updates) simulations

As an example, we will implement a classical Monte Carlo simulation implemented in the Ising model on a finite square lattice of size 482.

### Using command line

The parameter file parm1a:

```LATTICE="square lattice"
T=2.269186
J=1
THERMALIZATION=10000
SWEEPS=50000
UPDATE="local"
MODEL="Ising"
{L=48;}
```

We first convert the input parameters to XML and then run the application spinmc:

```parameter2xml parm1a
spinmc --Tmin 10 --write-xml parm1a.in.xml
```

The "|Magnetization|" timeseries, say, is stored in the output file "parm1a.task1.out.h5" under the HDF5 path "/simulation/results/|Magnetization|/timeseries/data".

Based on the timeseries, the user will then judge for himself/herself whether the simulation has reached equilibration.

### Using Python

The following describes what is going on within the script file tutorial1a.py.

```import pyalps
```

Set up a python list of parameters (python) dictionaries:

```parms = [{
'LATTICE'         : "square lattice",
'MODEL'           : "Ising",
'L'               : 48,
'J'               : 1.,
'T'               : 2.269186,
'THERMALIZATION'  : 10000,
'SWEEPS'          : 50000,
}]
```

Write into XML input file:

```input_file = pyalps.writeInputFiles('parm1a',parms)
```

and run the application spinmc:

```pyalps.runApplication('spinmc', input_file, Tmin=10, writexml=True)
```

We first get the list of all result files via:

```files = pyalps.getResultFiles(prefix='parm1a')
```

and then extract, say the timeseries of the |Magnetization| measurements:

```ts_M = pyalps.loadTimeSeries(files[0], '|Magnetization|');
```

We can then visualize graphically:

```import matplotlib.pyplot as plt
plt.plot(ts_M)
plt.show()
```

Based on the timeseries, the user will then judge for himself/herself whether the simulation has reached equilibration.

ALPS Python provides a convenient tool to check whether a measurement observable(s) has (have) reached steady state equilibrium. Read here to see how it works.

Here is one example (observable: |Magnetization|) (default: 63% confidence interval) :

```pyalps.checkSteadyState(files[0], '|Magnetization|')
```

and another one (at 90% confidence interval):

```pyalps.checkSteadyState(files[0], ['|Magnetization|', 'Energy'], confidenceInterval=0.9)
```

and its complete log:

```pyalps.checkSteadyState(files[0], ['|Magnetization|', 'Energy'], confidenceInterval=0.9, includeLog=True)
```

### Using Vistrails

To run the simulation in Vistrails open the file mc-01b-equilibration.vt.