# `ensemble` (standard)¶

The `ensemble` keyword is used to set up an integration method (an “integrator”). The integrators described on this page provide conventional methods for controlling temperature and pressure during classical MD simulations. Background information pertaining to the different methods referred to on this page can be found here.

## Syntax¶

### `nve`¶

If the first parameter is `nve`, it means that the ensemble for the current run is NVE (micro-canonical). There is no need to further specify any other parameters and the full command is simply:

```ensemble nve
```

### `nvt_ber`¶

If the first parameter is `nvt_ber`, it means that the ensemble for the current run is NVT (canonical) generated by using the Berendsen method. In this case, one needs to specify an initial target temperature `<T_1>`, a final target temperature `<T_2>`, and a parameter `<T_coup>`, which reflects the strength of the coupling between the system and the thermostat. The full command is:

```ensemble nvt_ber <T_1> <T_2> <T_coup>
```

The target temperature (not the instant system temperature) will vary linearly from `<T_1>` to `<T_2>` during a run. The choice of `<T_coup>` is discussed below.

### `nvt_nhc`¶

If the first parameter is `nvt_nhc`, it is similar to the case of `nvt_ber`, but using the Nose-Hoover chain method.

### `nvt_bdp`¶

If the first parameter is `nvt_bdp`, it is similar to the case of `nvt_ber`, but using the Bussi-Donadio-Parrinello method.

### `nvt_lan`¶

If the first parameter is `nvt_lan`, it is similar to the case of `nvt_ber`, but using the Langevin method as proposed in [Bussi2007a].

### `nvt_bao`¶

If the first parameter is `nvt_bao`, it is similar to the case of `nvt_ber`, but using the Langevin method with BAOAB splitting [Leimkuhler2013].

### `npt_ber`¶

If the first parameter is `npt_ber`, it means that the ensemble for the current run is NPT (isothermal–isobaric) generated by using the Berendsen barostat. In this case, apart from the same parameters as in the case of `nvt_ber`, one needs to further specify some target pressure(s), the same number of estimated elastic moduli, and a pressure coupling constant `<p_coup>`. The general format is:

```ensemble npt_ber <T_1> <T_2> <T_coup> {<pressure_control_parameters>}
```

with three different options for specifying `pressure_control_parameters`:

• Condition 1: Cell shape updates are isotropic

```<p_hydro> <C_hydro> <p_coup>
```

This means you regard your system as isotropic and want to control the three box lengths uniformly according to the hydrostatic pressure `<p_hydro> = (p_xx + p_yy + p_zz)/3`. All directions should have periodic boundary conditions. Currently, we require the box to be orthogonal.

• Condition 2: Cell shape updates are orthorhombic

```<p_xx> <p_yy> <p_zz> <C_xx> <C_yy> <C_zz> <p_coup>
```

In this case, the simulation box must be orthogonal. The three box lengths will be controlled independently according to their respective target pressures. Any direction can be either periodic or nonperiodic and pressure controlling will only be effective in periodic directions.

• Condition 3: Cell shape updates are triclinic

```<p_xx> <p_yy> <p_zz> <p_yz> <p_xz> <p_xy> <C_xx> <C_yy> <C_zz> <C_yz> <C_xz> <C_xy> <p_coup>
```

The simulation box must be triclinic and all the directions must be periodic. All cell components will be controlled independently according to the 6 target pressure components.

Elastic constants in literature may use a different nomenclature. The correspondence is as follows:

`C_xx=C_xxxx=C_11`, `C_yy=C_yyyy=C_22`, `C_zz=C_zzzz=C_33`,
`C_yz=C_yzyz=C_44`, `C_zx=C_zxzx=C_55`, `C_xy=C_xyxy=C_66`

It is sufficient for the elastic constant tensor `C_ab` to be a (very rough) estimate as long as it is of the right magnitude. It is used to convert the coupling constant (or relaxation time, see here) of the barostat into suitable internal units.

### `npt_scr`¶

If the first parameter is `npt_scr`, it is similar to the case of `npt_ber`, but using the stochastic cell rescaling method.