The part of FEFF that computes potentials is one of its essential parts and is used by DEMETER. Continuing with the example from the previous section, we can use an instrumented Feff object to compute potentials.
- #!/usr/bin/perl use Demeter;
- my $feff = Demeter::Feff -> new(file => "feff/feff.inp");
- $feff -> set(workspace => "feff/", screen => 0,);
- $feff -> potph
When the potph method is called, DEMETER writes a feff.inp file using the data from the original input file but with the CONTROL keyword set such that only the potph part of FEFF gets run. At the end of this, FEFF's phase.bin file will be written into the workspace directory.
That's it. This part of FEFF is used as-is by DEMETER. In the course of fitting, you might find that you need to move an atom by such a large amount that you will want to recompute the potentials. For smaller moves, DEMETER (and IFEFFIT) assume that the primary effect of the move on the EXAFS is from changing the value of R in the EXAFS equation. Thus we assume that the changes in the scattering amplitude and phase shift due to the small change in the potential surface caused by a readjustment of the interatomic distance are small compared to effect of R in the EXAFS equation.
At this time, there is not an obvious mechanism in DEMETER to close this loop in the situation where the potentials need to be recalculated. That is, there are no tools for rewriting the atoms list in feff.inp based on changes in inter-atomic distance uncovered in a fit.
Track geometric parameters from ATOMS to every site in the FEFF input file. Then provide tools for parameterizing interatomic distances based on the geometry.