Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
newville opened this issue Apr 10, 2017 · 2 comments
Open

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

newville opened this issue Apr 10, 2017 · 2 comments

Comments

@newville
Copy link
Member

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

  • PREFIX/bin/: ff2x, genfmt, pathfinder, pot, rdinp, xsph

  • PREFIX/lib/: json_module.mod, libfeffpath.EXT, libfeffphases.EXT, libjsonfortran.a, libonepath.EXT, libpotph.EXT

  • PREFIX/include: feffpath.h, feffphases.h

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
Copy link
Contributor

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
Copy link
Member Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants