You can find the introduction and some basic usage of DPLR in the official documentation. However, you may encounter some problems when trying to restart the DPLR simulation in Lammps.

As illustrated in the official documentation, the initial data file for the DPLR simulations in Lammps should include both the real atoms and the Wannier atoms. What’s more, the position of the Wannier atoms should be the same as their corresponding real atoms. It is required to make the Wannier atoms and their corresponding real atoms are allocated to the same processor. However, this requirement is not satisfied in the restart simulation. Therefore, we need to restart the DPLR simulation in a different way:

  1. Read the positions and the velocities of the final step from the data file either from write_data or the restart file (lmp_mpi -restart2data system.restart restart_system.data). Be careful that the unit for the velocities in ase is inconsistent with the metal unit in Lammps, and a conversion is needed. You can find more details here.
     from ase import io, units
    
     # read the final step from the data file
     atoms = io.read("after_system.data", format="lammps-data", sort_by_id=True)
     # return the velocities in Ang/ps (metal unit)
     velocities = atoms.get_velocities() * units.fs * 1e3
    
  2. Reset the positions of the Wannier atoms to the same as their corresponding real atoms.

  3. Write the data file with velocities for the restart simulation.