Demeter's interface with Feff

Old school and new school

Old paradigm: run Feff and use its output in some way.

New paradigm: run Feff as needed to produce output for carefully controlled input

Input file

The feff.inp file remains the basic unit of currency for Demeter's interaction with Feff and should be retained for backwards compatibility to old skool Feff6 and forwards compatibility to Feff8 and beyond. How Demeter uses the feff.inp file is quite different from its conventional use, however. Demeter reads the input file into an internal representation. When a Feff calculation is serialized, it is this internal representation that is saved. Once read, the feff.inp file can be abandoned (but will probably be carried around in whatever form Demeter projects eventually take).

Feff will be run as needed. To do anything with the cluster of atoms defined in the input data, the potentials must be calculated. Demeter, therefore, will write out a temporary feff.inp file with the CONTROL keyword set to just run Feff's first "module"1. The resulting phase.bin file will be carried around in a project and used when needed to generate feffNNNN.dat files.

Later on, when feffNNNN.dat files are made so that fits can be done, Demeter again writes out a temporary feff.inp file, this time with the CONTROL keyword set to run just Feff's third module. Demeter will generate a paths.dat file on the fly containing only the path geometries required for the fit. This "just-in-time" feffNNNN.dat generation will avoid the annoying proliferation of path files that every Feff user knows and loves. It will also provide a mechanism to avoid filename collisions when a Feff calculation is changed and rerun or when multiple Feff calculations are made.

The traditional four parts of Feff

Potentials

This has all the physics in it and it produces a binary blob. Continue using it. Demeter runs only feff's first module and carries the phase.bin file around as a part of a project.

Path finder

Demeter will be abandoning use of Feff's path finder in preference of a new implementation that offers these significant new features:

  1. Degeneracy is determined with fuzziness. Paths with similar, but not equal, half-lengths and/or scattering angles will be grouped together as effectively degenerate. The width of these fuzzily degenerate bins is configurable.
  2. The geometries of the degenerate paths are preserved. This will aid in the identification of paths in a ball-and-stick view and allow easier tracking of how structural distortions propagate into the path list.
  3. In a future version of Demeter, Atoms will keep track of math expressions explaining how each atom arrived at its position in the cluster. In this way a crystal distortion can be propagated through the entire cluster, correctly tracking broken degeneracies.

There are three shortcomings of Demeter's path finder compared to Feff's:

  1. It is implemented in an interpreted language, it is considerably slower. This is exponentially true for larger clusters.
  2. It is currently limited to 4-legged paths. This is not a fundamental limitation, merely a lazy one. Eventually all leggedness limitations will be removed from Demeter's implementation.
  3. Demeter cannot compute the so-called importance factor which is used to limit the size of the heap and to convey approximate information about path size to the user. This means the heap size grows quite a bit faster than for normal Feff. As a partial solution, Demeter uses heuristics to approximate path importance.

genfmt

This reads and uses the binary blob contained in phase.bin. The feffNNNN.dat files are generated as needed by writing out specially crafted paths.dat files and running Feff's third module. This avoids proliferation of unneeded files as well as provides a mechanism for avoiding filename collisions when rerunning feff or running multiple Feff calculations.

At the moment, it is run as a system call. Eventually, this will be turned into a library and wrapped in SWIG so it can be accessed directly.

ff2chi

The last part of Feff was abandoned long ago. In a very real sense, Ifeffit is an elaborate re-write of Feff's ff2chi segment. Let's continue doing that, shall we?

Demeter applications

Version 0.1 of Demeter already includes three useful stand-alone, command-line applications relevant to the Feff-iverse.

  • datoms is a version of atoms built using the Demeter code base.

  • dfeff is a wrapper around Demeter's Feff6 functionality. dfeff behaves somewhat like the Feff6 everyone already knows, but with several obvious improvements including the ability to read arbitrarily named input files and the ability to specify a working directory from the command line.

  • intrp is much like Artemis' Feff interpretation page with the ability to produce colored screen output, html pages, or latex files.


  • 1 Feff's "modules" are not really modules in the sense of a programming language. But that is the term The FEFF Project has always used.

Demeter/Feff (last edited 2008-02-14 02:21:31 by BruceRavel)