Including only bare-bones ASCII in/out is, IMHO, the only way to obtain true portability, and it has worked. I vaguely recall that they use some sort of verifier on their code to screen out system dependencies.
I don't understand this.
A verifier is a program that inspects programs, looking for probable bugs such as un-initialized variables, non-standard syntax, and system dependencies. In fortran and C, graphics is not natively provided, so much be called from a library. Such libraries vary from system to system.
If it uses a g(r) approach, then I imagine that it doesn't handle multiple scattering. On the other hand, it could be argued that *in the EXAFS range* a system which needs a g(r) approach won't have detectable MS. That still leaves XANES, though.
Actually, GNXAS does handle MS. It's not clear to me how well it handles small crystallographic distortions, mixed shells, and so on, but it does include MS. I agree with you that requiring one of g(R) and MS seems to suggest that the other isn't necessary.
It may use MS for systems in which the atomic positions are defined, but g(r) alone does not define them. To get both *at one time* would require some way of specifying baseline atoms positions plus some random distortions with specified distributions, plus models for how those distortions are correlated. Essentially, calculating MS requires assuming things about 3-body correlations at least.
That's not about "theory" as analysis. I don't know what theoretical advantages GNXAS might have. I believe it includes curved wave effects, and that it uses the Hedin-Lunqvist exchange (perhaps the only option?). I think that it has a simple polarization model (perhaps only dipole??). I believe it does multiple-scattering only out to four-leg paths (good enough for almost all cases), and don't know how it does this. I recall from one of the GNXAS papers that they talked about correlating Debye-Waller factors for MS paths with those of SS paths, but I don't know that works in practice.
All that sounds like what FEFF has.
Err, no. Feff has multiple options for exchange potentials, and decent models for loss terms. Feff has polarization dependence beyond dipole, which is needed for L edges, and can do elliptical polarization fot XMCD. I think GNXAS has none of that.
I meant that FEFF's options are a superset, not that they are identical.
For DW factors for MS paths, Feff can use the correlated Debye model. GNXAS claims to do something different and more complicated, but I've never understand this, or why that would be important for systems that needed to be treated with a g(R).
If GNXAS provides two different systems, one for disordered systems described by g(r) and one for systems described by atomic positions, then maybe the 'different&more complicated' part is only for the atom-position case. mam