xraypy / feff85exafs

Feff8L: Open Source theoretical EXAFS fitting standards
Other
15 stars 7 forks source link

names of "module binaries" do not convey "feff8l"-ness #36

Open newville opened 7 years ago

newville commented 7 years ago

Currently (unless I'm mistaken), make install installs

where EXT='so' for linux, 'dylib' for Mac, 'dll' for Windows.

I see three problems here:

  1. there actually isn't a "feff8l" script or executable.
  2. there really isn't anything that clearly identifies these as belonging to "feff8l".
  3. it's not really clear to me why there are so many "feff8l libraries".

I propose condensing the shared libraries libfeffpath.EXT, libfeffphases.EXT, and libonepath.EXT
to a single libfeff8l.EXT, and changing the name for the installed binary files:

bin/ff2x -> bin/feff8l_ff2chi
bin/genfmt -> bin/feff8l_genfmt
bin/pathfinder -> bin/feff8l_pathfinder
bin/pot -> bin/feff8l_potentials
bin/rdinp -> bin/feff8l_readinp
bin/xsph -> bin/feff8l_phases

We can then also include a bash file (or bat file for Windows) that runs all of these.

bruceravel commented 7 years ago

I don't know that it was a good decision, but my thinking behind the libraries is that libonepath and libpotph are the Fortran entry points. That is, a Fortran programmer would want a familiar, Fortran-syntax way of getting into those two things. They both expose Fortran subroutines with a long argument lists.

libfeffpath and libfeffphase are fairly thin C wrappers which expose a data structure and map the data structure onto the Fortran subroutine calls in the other two libraries.

As I said, not necessarily the most sensible, but it's what I did when i did it, which was quite some time ago by now....

As for the executables, I replicated what Feff8 did as delivered and thought about improving upon it not at all. That wasn't a decision so much as a stopping point.

I am fine with executables named feff8l_*. I would also be fine with a small C or python program called feff8l which, when called without an argument, would run all of Feff in the original sense. When called with an argument, it would run the individual steps.

newville commented 7 years ago

addressed in #41, though the small feff8l program there is in Python (with no non-standard lib dependencies).