`ensemble` (TI_RS)¶

This keyword is used to set up a nonequilibrium thermodynamic integration integrator with Reversible Scaling (RS) path. It calculates Gibbs free energy along an isobaric path. Please check [Koning2001] and [Freitas2016] for more details.

Syntax¶

The parameters can be specified as follows:

```ensemble ti_rs temp <tmin> <tmax> tperiod <tau_temperature> <pressure_control> <pressure> pperiod <tau_pressure> tswitch <switch_time> tequil <equilibrium_time>
```
• `<tmin>` and `<tmax>`: The temperature range of the RS simulation.

• `<pressure_control>` and `<pressure>`: The pressure of RS simualtion. Please refer to MTTK ensemble for more information.

• `<tau_temperature>` and `<tau_pressure>`: These parameters are optional. Please refer to MTTK ensemble for more information.

• `<equilibrium_time>`: The number timesteps to equilibrate the system.

• `<switch_time>`: The number timesteps to vary lambda.

If you do not specify `<equilibrium_time>` and `<switch_time>`, they will be automatically set in a 1:4 ratio.

Example¶

```ensemble ti_rs temp 300 3000 aniso 10 tswitch 10000 tequil 1000
```

This command switch lambda for 10000 timesteps.

Output file¶

This command will produce a csv file. The columns are lambda, dlambda, and enthalpy (eV/atom).

```import yaml
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import cumtrapz
from ase.units import kB

# you need to run a ti_spring simulation at t_min
with open("ti_spring_300.yaml", "r") as f:

T0 = y["T"]
G0 = y["G"]

n = int(len(rs)/2)
forward = rs[:n]
backward = rs[n:][::-1]
backward.reset_index(inplace=True)
dl = forward["dlambda"]
l = forward["lambda"]
H1 = forward["enthalpy"]
H2 = backward["enthalpy"]
T = T0/l

w = (cumtrapz(H1,l,initial=0) + cumtrapz(H2,l,initial=0))*0.5

G = (G0 + 1.5*kB*T0*np.log(l) + w)/l
plt.plot(T, G, label="RS")
plt.legend()
plt.xlabel("T (K)")
plt.ylabel("G (eV/atom)")
```