C++ library for atomic configuration manipulation

I’ve asked in the ASE and LAMMPS forums without any luck so far, but since it’s not unlike what OpenKIM is, has anyone run across any C++ libraries that handle atomic configurations (atoms, PBCs, transformation from lattice to Cartesian, etc), basically an ASE (w/o the calculator functionality) for C++? Ideally one that’s reasonably compatible with the way data interacts with LAMMPS, but that’s optional at this point.

Hi Noam,
It’s not exactly what you asked for, but the astomsk package (https://atomsk.univ-lille.fr/) provides various functionalities for manipulating atomic structures.

Thanks, I guess the real question is whether they have a more-or-less free-standing atomic configuration library I can reuse. For that matter, I suppose I could write it in fortran and use libAtoms, although we’ve by and large deprecated it except as a low level component of QUIP.

Dear Noam,

the SCINE utilities might be what you are looking for:

The current release does not feature PBCs, but the upcoming release (hopefully out this month) will feature them and should provide everything that you are looking for.

You also optionally have a graph library and calculator interfaces, if you later still want to use something like that.

You can also do some quick testing with the python bindings. If you want to have some C++ examples on how to work with the code, you can check out SCINE ReaDuct, which provides structure manipulation tasks.

Best wishes,

For the sake of completeness, I can mention the AFLOW offering some C++ code for handling the crystalline structures, however be aware of GPL license and absence of any version control system.

Thanks everyone for your suggestions. I ended up putting together a very lightweight layer, which is sufficient for my needs for now.