# Langevin Dynamics

In this tutorial, we are going to show the reader how to perform Langevin molecular dynamics for a sub set of atoms in the simulation cell, with the rest of the atoms undergoing Born-Oppenheimer molecular dynamics. We assume the reader has already got the basic knowhow of performing molecular dynamics using CP2K.

To be able to perform this calculation, you must have CP2K version 2.5 or above.

We will use a simple 64 atoms face centred cubic bulk Si as an example. The system will start from a relaxed ground state structure (i.e. a geometry optimisation calculation has first been performed already), with the first atom will be displaced slightly from its optimal position, which then kick-starts the molecular dynamics. The initial atomic velocities are set to be zero. The first 24 atoms in the system will be performing NVT Langevin dynamics, while the rest will be performing NVE Born-Oppenheimer dynamics.

The example files can be downloaded from here. The calculation were carried out using CP2K version 2.5.

## Input Flags

All we need to do to perform this calculation is to add/modify a few flags in the MD subsection in the main CP2K input file.

The relevant sections for the example are listed below:

In the MD subsection, we need to set the ENSEMBLE keyword to `LANGEVIN`

    ENSEMBLE LANGEVIN

This ensures we will be doing Langevin molecular dynamics. The method of applying mixed NVE and NVT dynamics only works if Langevin MD is switched on.

The important thing to do next is to define the thermal regions, which controls whether each region will be performing NVT Langevin MD or NVE Born-Oppenheimer MD. In our example, we have inside the MD subsection the following:

    &THERMAL_REGION
      DO_LANGEVIN_DEFAULT F
      &DEFINE_REGION
        TEMPERATURE $temp
        DO_LANGEVIN T
        LIST  1..24
      &END DEFINE_REGION
      &DEFINE_REGION
        # TEMPERATURE $temp
        DO_LANGEVIN F
        LIST  25..64
      &END DEFINE_REGION
      &PRINT
        &LANGEVIN_REGIONS
        &END LANGEVIN_REGIONS
      &END PRINT
    &END THERMAL_REGION

The DO_LANGEVIN_DEFAULT keyword defines if Langevin MD is to be performed for all atoms that are outside the regions defined in THEMAL_REGION; the default value is `F`, which means any atoms not included in the thermal regions will undergo NVE MD by default. If the value is set to `T`, then any atoms not included in the thermal regions will undergo Langevin MD by default.

Each of the subsections

    &DEFINE_REGION
      TEMPERATURE $temp
      DO_LANGEVIN T
      LIST  1..24
    &END DEFINE_REGION

defines a thermal region. The subsections may be repeated an arbitrary \(N\) number of times for \(N\) thermal regions. Inside, the DO_LANGEVIN keyword defines if the atoms defined in the region is to undergo NVT Langevin MD (`F`), or NVE MD (`F`); the LIST keyword defines the list of atoms in the particular thermal region; TEMPERATURE defines the target temperature for the region, which is only taken into account if DO_LANGEVIN is set to `T`. Note that in this example, temperature is set by referring to an input preprocessor variable `$temp`, whose value (500 K) is defined at the top of the main input file.

By default, DO_LANGEVIN is set to `T`, however, this will only be taken into account if the ENSEMBLE keyword in the `MD` subsection is set to `LANGEVIN`, therefore it will not effect the definition of the thermal region for molecular dynamics using ensembles other than `LANGEVIN`.

In our example, we have defined two regions. The first region contains atoms 1 to 24, undergoing NVT Langevin MD with target temperature of 500 K, and the second region contains atoms 25 to 64, undergoing NVE Born-Oppenheimer MD. Note that since DO_LANGEVIN_DEFAULT is set to `F` (by default), in principle, we do not have to define the second region. It is defined here in this example to show how these regions can be defined.

The TEMPERATURE keyword in MD subsection defines the target temperature of the molecular dynamics for all atoms left out of the defined thermal regions. If the THERMAL_REGION subsection is not explicitly present in the input file, then CP2K assumes all atoms in the simulation cell undergoes Langevin MD. In this case this TEMPERATURE keyword defines the target temperature for the entire system. If the THERMAL_REGION subsection is explicitly present in the input file, then this TEMPERATURE keyword sets the default target temperature for the atoms if they undergo Langevin MD. This value is overridden by the TEMPERATURE keywords in each DEFINE_REGION subsections.

Information on the NVT and NVE regions may be printed out by using the PRINT subsection in the THERMAL_REGION subsection:

    &PRINT
      &LANGEVIN_REGIONS
      &END LANGEVIN_REGIONS
    &END PRINT

Simply add the subsection LANGEVIN_REGIONS to PRINT. The region information will be written in an output file with suffix: `lgv_regions`.

## Importance of Initial Velocity To Consistency Of Calculations

If the initial velocities of the atoms are not explicitly defined in the input, CP2K will randomise the atomic velocities to give an initial temperature corresponding to the target temperature defined by TEMPERATURE keyword in MD subsection.

Due to the stochastic nature of Langevin MD, the trajectories of the atoms generated as a result of the pseudo-random number generators will be dependent on the initial velocities of the atoms. Therefore, if you are to perform to two calculations with the same physical thermal regions setup, but do not specify the initial velocities, there is a chance that the velocities and energies at each MD step can be different for the two calculations. This can arise, in the cases where the setups are physically the same, but computationally different in terms of input setup: for example: setting DO_LANGEVIN_DEFAULT to `T` and define a NVE region with atoms 25 to 64 (DO_LANGEVIN set to `F`), is physically the same as setting DO_LANGEVIN_DEFAULT to `F`, and define a NVT region with atoms 1 to 24 (DO_LANGEVIN set to `T`). However, this difference in the input may cause a different randomised set of initial velocities at the start of the calculations, and make the two calculations not matching exactly step-by-step. Of course, the overall physical results will still be the same.