questions about library.cpp

So why not creat a 2-d copy instead of 1-d copy? Is there any reason?

It's because we wanted the library interface to be usable by languages
other than C/C++, such as Fortran. Fortran wouldn't know how
to interpret a double **array with an extra layer of pointers. But all
languages can take a pointer to a chunk of memory that contains
the data (i.e. a 1d chunk of linear memory).

That said, some of the newer functions like lammps_extract_compute
do return double ** pointers, so we're inconsistent.

Karl - is there some consistent way to have Fortran treat C pointers
as return args - like a double vs double * vs double **? Does your
Fortran wrapper work correctly with the current lammps_extract_atom
for a double **, like x for coords? Or does it have to make extra
copies of x for Fortran to use it, which kind of defeats the purpose
of that function's interface?