Discrepancies in manual, pair_style nb3b/harmonic

Dear LAMMPS developer team,

I am working on latest 12 Dec 2018 released version of lammps. I was trying to do simulations on crystal structure of LFP (lithium iron pohsphate) as given in below attached file (filename: in.lfp). In this system I have a three body interaction (between O-P-O angled atoms) which requires the use of “pair_style nb3b/harmonic”. In the start when I was using this pair style, I was following the instructions in the manual. These are the statements in the LAMMPS manual I am talking about:

" For a given entry, if the second and third arguments are identical, then the entry is for a cutoff for the distance between types 1 and 2 (values for K and theta_0 are irrelevant in this case).

For a given entry, if the first three arguments are all different, then the entry is for the K and theta_0 parameters (the cutoff in this case is irrelevant)."

Initially I was working with “metal” units and so I was using the value for nb3b prefactor “K” in terms of eV. I followed the above instruction for my system of O-P-O, where second and third argument are identical (O atoms), I submitted only ‘cutoff value’ as per instruction. That did not work for my system. Then, I totally ignored the above statements submitting the attached potential file (filename:lfp.nb3b.harmonic, where all three values are submitted for O-P-O pair, K value was submitted in eV: K= 0.66 eV) and verified the results from nb3b pair_style by comparing with my manually calculated results, pair_style nb3b/harmonic was working properly. Whereas my system was not working properly and hence I again tried to fit in my parameters in the potential file according to above statements in the manual using various combinations, as above statements look imperfect. to accommodate all the parameters. Still, nothing worked!

Next, I checked the source file: “pair_nb3b_harmonic.cpp” and found that the code to be perfectly fine as far as my understanding goes and it also do not restrict the entries of parameters as mentioned in above statements from manual. I made a new attempt by converting all my potential values in “real” units and the program worked perfectly fine (using the same file for nb3b potential that is attached below, lfp.nb3b.harmonic).

Based on my verification of both source code and stand alone results, the program works totally fine and it is totally inconsistent with above statements in the manual. Whereas, this is quite surprising that my system is working well with “real” units but not with “metal”. So, is there any glitch in other source programs that is causing such difference? It is also not mentioned anywhere in the manual that this pair_style should be used with “real” units only.

I request you to please consider my observations and make required changes in the manual, if there are no changes please make the description more comprehensive with all possible examples (like three body systems with different terminal atoms, same terminal atoms, all three atoms are same). And please answer my doubt, why my system is working in “real” units but not in “metal”? Wish you and all the LAMMPS users a great year ahead, Happy New Year!

Regards,

Saurabh

lfp.nb3b.harmonic (786 Bytes)

in.lfp (2.73 KB)

I will have to confer with the pair style author on the issue with the code versus the documentation.

Re: units, any pair style in LAMMPS can be used with any of the LAMMPS units options, e.g. real or metal.
However if the pair style takes an input file of parameters (like those in the potentials dir), then
it is up to you to insure that all the parameters in that file are in the correct units. Provided
files (like those in the potentials dir) obviously are in specific units. So you would have to alter
the files or create new ones to use them with a different LAMMPS unit option.

Steve

Thank you, will waiting for reply from the nb3b pair style author.

Just want to make sure, so is it correct to use ‘metal’ units in main script where I state potentials using pair_coefficient command and ‘real’ units in nb3b/harmonic potential file? do you mean, the LAMMPS will take care of different units in different potential files?

Thanks,

Saurabh

Thank you, will waiting for reply from the nb3b pair style author.

Just want to make sure, so is it correct to use 'metal' units in main script where I state potentials using pair_coefficient command and 'real' units in nb3b/harmonic potential file? do you mean, the LAMMPS will take care of different units in different potential files?

no. it is the other way around. you *must* use the same units settings
in the LAMMPS input that matches the units used in the potential file.
otherwise your simulations are guaranteed to be garbage. this is very
clearly stated in the manual.

axel.