We have implemented a two + three-body force field with long range
interaction (2-body = LJ, 3-body = Stillinger-Weber) under the framework
of SW, with greatly appreciated help from Aiden P. Thompson. One
drawback is that it takes the LJ from the force field file, just like
the SW, and hence computes the 3-body force field for all triplets in
the configuration. This makes the code run very slow. Is there a smart
way of computing the 2-body for all types of pairs and the 3-body for
only a selected numbers of triplets of types, like (Si-O-Si, O-Si-O,
Al-O-Al, Al-O-Si, O-Al-O) in an alumino silicate glass?
Yes. You just need to write a code, that does what you want. If you
want to make the program run as fast as possible, it may be a good
idea to write a less general code, i.e. the pair potential that is
specific for your case.
I implemented a potential that is similar to S-W. Two most important
- using spline interpolation for 2-body part of the potential (in my
case 2-body force was computationally expensive, but I think DL_POLY
does it for all 2-body potentials)
- making a separate neighbour list for 3-body part of the potential.
In my case three-body cut-off is about 2.5 times smaller than 2-body
cut-off, and I also have 3-body forces only for some triplets of
atoms, so double loop over all 2-body neighbors was slowing down the
[I just read Pieter's reply. I'm doing what he wrote, but I'm
updating three-body neighbor list every step.]
This would be
possible if Lammps allowed users to add force fields for the same type,
like in dl_poly or Gulp.
I don't understand this.
please do not attach a dozen of completely unrelated messages to your question.