Recalculating forces at different time intervals for the different groups if atoms

Hi, dear LAMMPS users.

My simulation involves numerous calculations of the vacancy migration energy using NEB in a lattice with some other defect present (like dislocations, grain boundaries). The script I created works fine and gives reasonable results. At the present time all the atoms in a simulation volume are used to perform the NEB optimization. This, unfortunately, makes the process very lengthy for using it repeatedly.

My next idea, to save computational time, was to make a small group of atoms in a cubic region around the jumping vacancy and to try calculating forces just for that small group. Reading the documentaion I explored the follwing options.

  1. fix setforce freezes the requird atoms, but does not save time since the specified forces are applied after the regular forces are calculated based on the current forcefield.

  2. neigh_modify exclude for the atoms outside of the vacancy surroundings. This does save the time but at the same time seems to discard forces between the atoms inside the vacancy surroundings and outside of that. This leads to the group of atoms around the vacancy optimizing their positions independently of the rest of the atoms. Which breaks the local atomic configuration if it contains a dislocation.

  3. Then I started searching for an option that would allow me to calculate forces for the group atoms around the vacancy at every step of the relaxation, and the forces on the other atoms much less frequently, probably just once at the start of a simulation. I mean not just updating neighbors list but actually skip calculating forces. I have not found any such options.

Any suggestions to solve this problem?

The best solution is to look for more capable computers and run your calculations in full in parallel on a suitable machine. Many institution have local resources, but there also are national centers. But your description does not sound like you need a very large number of parallel compute nodes to get a significant speedup which will then render your need for approximating the forces superfluous. Most importantly, this does not require any programming.

Multi-timestepping, i.e. computing forces for atoms at larger distance exists in LAMMPS only for selected pair styles and only for molecular dynamics runs with the respa run style.

If you are willing to spend time programming, you could implement your scheme using the QM/MM framework in LAMMPS. This does a mechanical coupling following the ONIOM scheme. For QM/MM you have three calculations, 1) MM forces for the entire system, 2) MM forces for the QM subsystem, 3) QM forces for the QM subsystem. Then the total forces are 1) minus 2) plus 3). For your scenario you could compute the forces for the entire system just once and then store them and write a dummy “MD” code that just returns the stored forces for the specific atoms and instead of the QM atoms you compute the forces with LAMMPS using whatever model you have. This requires some programming, testing and reading/understanding of the source code to work this out and can likely take your much more time than looking and asking for access to an HPC cluster.