Porting potentials¶
Empirical kernels live in rgpot.
eOn does not grow an in-tree NewPot. A kernel that belongs next to LJ,
Morse, or the Fortran pots is added in rgpot, then selected from eOn.
Kernel¶
Add the potential under rgpot (
CppCore/rgpot/<Name>/) and link it into the singlelibrgpotSONAME. Fortran kernels use the Fortran 2018 layout already in that tree and keep their symbols hidden.Expose a C++ face (
force/energy) and a small config struct. Neighbour finding goes through rgpot’s vesin cache, not a private pair loop.Pin a reference energy and force in an rgpot test.
eOn arm¶
Map a
potentialtoken to that type inmakePotential(client/Potential.cpp) withmakeRgpotormakeRgpotDefault.Add the token to the parameter schema (
[Potential]/ the pot’s own section) and toPotType.Keep subprocess and file engines (VASP, LAMMPS, ASE, AMS, socket NWChem) in eOn. They are not kernels.
Direct NWChem, CPMD, metatomic, and xTB engines stay dlopen plugins
behind potential type RGPOT. Non-Windows builds always link that arm.
There is no -Dwith_rgpot switch.
EON_POTENTIALS_PATH and [Potential] potentials_path still name
directories searched for those engine plugins. They are not a way to
register a new empirical kernel.