FEFF

FeFF is a program to calculate theoretical scattering amplitudes and phase shifts for EXAFS refinements.

Current version: 8.20 and 8.3 but 9.03 in milleotto
Location: /home/bio/FEFF8 /sw/pkg/bio/FEFF/feff90/
Executable: /home/bio/FEFF8/feff82.x (link in /home/bio/Bin/Linux)
Homepage: http://leonardo.phys.washington.edu/feff/
Documentation: file:/home/bio/FEFF8/feff82.pdf


How to run FEFF

  1. Obtain the EXAFS data, preferably already treated with background removal, normalisation, splining, and conversion to k-space.
    The IFEFFIT program requires the k-interval to be 0.05 Å-1 for the data, so one may need to do an interpolation --- consult the IFEFFIT manual, command interpol; see the IFEFFIT page.

  2. Use the program turbo2feff to get a feff input file (feff.inp) from Turbomole coordinates. If you have other coordinates, add them (in Å) for your current model into the file 'feff.inp' (sample input file) (no H-atoms are needed).
    Also add the potentials (one row for each atom type).
    Then, run FEFF by typing feff82
    The output will be lots of feffxxxx.dat files, which are the paths.
    The files files.dat and paths.dat give you more detailed information about the paths.

  3. If you do not get all sigma2 values for all paths with sping.inp, try to decrease the first number in criteria.
    If you get too many warings, try to increase wmax in spring.inp.

  4. If you have several metals of the same absorber, you need to have a separate directory for each absorbing atom.
    In each directory, you need to change the feff.inp and spring.inp files. tubo2feff always put the first metal as the absorber. To get other metals there, swap the two coordinate lines. You also have to change the potential number and the atom number on the two lines (i.e. the numbers in the 4th and 6th columns):
        0.13152015   0.76860882  -2.72454359  0   mn         0
    Likewise, you need to change the atom numbers in the spring.inp file (if used). This can be done by three global replacements, e.g. by xemacs (' 0 ' to ' z '; then ' 2 ' to ' 0 '; and finally ' z ' to ' 2 '). It works for all atoms, except for number 1 (i.e. the second one). Then, you have to do the second fit manually, avoiding to change the 1 in the columns dr_ij(%)  and dtheta.
    Note also that you should set S0 to 0.9/(#metals) in the fit.

FEFF sample input file (feff.inp)

The TITLE, POTENTIALS and ATOMS  (and possibly HOLE) are changed for a new molecule.
NLEG, RPATH and CRITERIA can be modified to change the number of included paths.

TITLE  Ni(en)3

*         ipot   ixsph ifms  ipaths igenfmt iff2chi
CONTROL   1      1     1     1      1       1
PRINT     1      1     1     1      1       3
S02    0.0

RPATH  5.0
NLEG   4
CRITERIA 6.0 3.0

HOLE 1   1.0     Ni K edge  (  8.333 keV)

POTENTIALS
*  ipot   z  label
    0    28   Ni
    1    7    N
    2    6    C

ATOMS
   -0.0000300    0.0013073   -0.0001816 0  Ni
   -2.4739038   -1.5115305    0.7589044 2  C
   -1.0483688   -1.4876796    1.1925291 1  N
   -2.5414679   -1.3959899   -0.7588443 2  C
    1.8130334   -0.1666801    1.1930930 1  N
   -0.7668047    1.6539245    1.1885048 1  N
    0.7628770    1.6552526   -1.1886481 1  N
    1.0514640   -1.4849035   -1.1924920 1  N
   -1.8121621   -0.1708810   -1.1931455 1  N
    2.5438814   -1.3911413    0.7591524 2  C
   -0.0731131    2.9011505    0.7588294 2  C
    0.0678481    2.9014319   -0.7585353 2  C
    2.4768456   -1.5073070   -0.7585675 2  C
END

Explanation:

TITLE title_line
Provide the title. You can have up to 10 lines, each starting with TITLE
p. 8 in manual (module 0)


CONTROL ipot ixsph ifms ipaths igenfmt iff2chi
Which modules to run (0 does not run a module)
Default
CONTROL 1 1 1 1 1 1
p. 7 in manual (module 0)


PRINT ppot pxsph pfms ppaths pgenfmt pff2chi
Set the print level  for each module
Default
PRINT  0 0 0 0 0 0
p. 8 in manual (module 0)


S02 s02
Also (like HOLE) specifies the amplitude reduction factor S02.
If s02<0.1, then it is estimated by the program. Typical values 0.8-1.0.
Default
S02 1
p. 14 in manual (module 1)


RPATH rpath
Maximum effective (hlaf-path) distance of a fiven path.
Default 2.2 x the nearest neighbor distance.
p. 25 in manual (module 4)


NLEG nleg
Limits the number of scattering paths to nleg.
Default
NLEG 8
p. 26 in manual (module 4)


CRITERIA critcw critpw
Limits the number of scattering paths.
critcw is a cutoff for a full curved wave calculation; default 4%.
critpw is a plane-wave approximation to chi (fast); default 2.5% (only paths with an amplitude larger than 2.5% of the maximum one is kept)
Default
CRITERIA 4.0 2.5
p. 26 in manual (module 5)
If you intend to use DEBYE keyword, you should have the first number in CRITERIA lower than the second one (so that you get Debye-Waller factors for all paths), e.g.
CRITERIA 1.0 2.5


HOLE ihole s02
Gives the hole-code index (i.e. the involed electron; K-shell = 1, see Table 2.2 in manual p. 13) and the amplitude reduction factor S02.
If s02<0.1, then it is estimated by the program. Typical values 0.8-1.0.
Default
HOLE 1 1
p. 12 in manual (module 2)


POTENTIALS
* ipot Z [tag lmax1 lmax2 xnatph]
A list which assigns a unique potential index to each distinguishable atom.
ipot is the potential index
Z is the atom number
tag is an optional 6-character text identifier
p. 12 in manual (module 1)


ATOMS
* x y z ipot
0.0 0.0 0.0 0
Cartesian coordinates in Å followed by unique potential indices (the rest of the row is a comment).
One atom per line. H atoms are not needed
There is a supplementary code atoms.x, which generates ATOMS list from crystallographic data.
p. 7 in manual (module 0)
It seems that at least parts of FEFF expects that the absorbing atom is the first one in the list.


DEBYE temperature Debye-temperature idwopt
Asks the program to estimate Debye-Waller factors for each paths (given in the file s2_em.dat).
There are three methods, given by idwopt=0, 1, or 2.
Example:
DEBYE 10 0 1
p. 27 in the manual (module 6).
Note that the absorbing atom needs to be first in the ATOMS list.

In order to get Debye-Waller factors for all paths, you need to set the first number in CRITERIA lower than the second one, e.g.
CRITERIA 1.0 2.5

Note the running problems with this keyword.


END
Marks the end of input. All lines after this are ignored
p. 8 in manual


FEFF output

From the sample input file; the calculation took ~20 s.

Files:
atoms.dat     feff0010.dat  feff0025.dat  feff0040.dat  log6.dat
axafs.dat     feff0011.dat  feff0026.dat  feff0041.dat  logdos.dat
chi.dat       feff0012.dat  feff0027.dat  files.dat     misc.dat
crit.dat      feff0013.dat  feff0028.dat  fms.bin       mod1.inp
feff.bin      feff0014.dat  feff0029.dat  fpf0.dat      mod2.inp
feff.inp      feff0015.dat  feff0030.dat  geom.dat      mod3.inp
feff0001.dat  feff0016.dat  feff0031.dat  global.dat    mod4.inp
feff0002.dat  feff0017.dat  feff0032.dat  ldos.inp      mod5.inp
feff0003.dat  feff0018.dat  feff0033.dat  list.dat      mod6.inp
feff0004.dat  feff0019.dat  feff0034.dat  log.dat       paths.dat
feff0005.dat  feff0020.dat  feff0035.dat  log1.dat      phase.bin
feff0006.dat  feff0021.dat  feff0036.dat  log2.dat      pot.bin
feff0007.dat  feff0022.dat  feff0037.dat  log3.dat      xmu.dat
feff0008.dat  feff0023.dat  feff0038.dat  log4.dat      xsect.bin
feff0009.dat  feff0024.dat  feff0039.dat  log5.dat

stdout output:
Feff 8.20
 Ni(en)3
 Calculating potentials ...
    free atom potential and density for atom type    0
    free atom potential and density for atom type    1
    free atom potential and density for atom type    2
    initial state energy
    overlapped potential and density for unique potential    0
    overlapped potential and density for unique potential    1
    overlapped potential and density for unique potential    2
    muffin tin radii and interstitial parameters
 iph, rnrm(iph)*bohr, rmt(iph)*bohr, folp(iph)
    0  1.45965E+00  1.38788E+00  1.13723E+00
    1  1.14307E+00  9.33010E-01  1.15000E+00
    2  1.10893E+00  8.58450E-01  1.15000E+00
 mu_old=     5.401
 Done with module 1: potentials.
 Calculating cross-section and phases...
    absorption cross section
    phase shifts for unique potential    0
    phase shifts for unique potential    1
    phase shifts for unique potential    2
 Done with module 2: cross-section and phases...
 Done with module 3: FMS.
 Preparing plane wave scattering amplitudes...
 Searching for paths...
   WARNING:  rmax > distance to most distant atom.
             Some paths may be missing.
             rmax, ratx   5.00000E+00  0.00000E+00
    Rmax  5.0000  keep and heap limits   0.0000000   0.0000000
    Preparing neighbor table
    Paths found      288   (maxheap, maxscatt      74   3)
 Eliminating path degeneracies...
    Plane wave chi amplitude filter   3.00%
    Unique paths     41,  total paths      80
 Done with module 4: pathfinder.
 Calculating EXAFS parameters...
    Curved wave chi amplitude ratio   6.00%
    path  cw ratio     deg    nleg  reff
      1   100.000     2.000     2   2.1753
      2    99.891     2.000     2   2.1764
      3    99.828     2.000     2   2.1770
      4    22.119     1.000     2   2.9975
      5    66.339     3.000     2   2.9978
      6    44.205     2.000     2   2.9984
      7    10.587     2.000     3   3.3318
      8    21.150     4.000     3   3.3321
      9    10.539     2.000     3   3.3323
     10    10.547     2.000     3   3.3323
     11    10.533     2.000     3   3.3327
     12     7.858     4.000     3   3.5916
     13     1.515     1.000     4   3.6652
     14     1.514     1.000     4   3.6658
     15     1.512     1.000     4   3.6664
     16     1.511     1.000     4   3.6668
     17     3.018     2.000     4   3.6675
     18    12.699     4.000     3   3.7595
     19    11.815     6.000     3   3.8164
     20    13.914     2.000     3   4.3455
     21    13.915     2.000     3   4.3453
     22    13.883     2.000     3   4.3467
     23     2.109     1.000     4   4.3497
     24     2.107     1.000     4   4.3506
     25     6.556     2.000     4   4.3517
     26     6.557     2.000     4   4.3516
     27     4.207     2.000     4   4.3525
     28     6.519     2.000     4   4.3534
     29     4.203     2.000     4   4.3537
     30     3.446     1.000     4   4.4877
     31     3.449     1.000     4   4.4878
     32     3.453     1.000     4   4.4887
     33     3.447     1.000     4   4.4883
     34     3.444     1.000     4   4.4884
     35     3.451     1.000     4   4.4889
     36     3.499     2.000     3   4.8442
     37     3.499     2.000     3   4.8437
     38     3.532     2.000     3   4.8454
     39     3.531     2.000     3   4.8459
     40     3.509     2.000     3   4.8454
     41     3.508     2.000     3   4.8460
   41 paths kept,   41 examined.
 Done with module 5: F_eff.
 Calculating chi...
 feffdt, feff.bin to feff.dat conversion Feff 8.20
 Ni(en)3                                                          Feff 8.20
 POT  Non-SCF, core-hole, AFOLP (folp(0)= 1.150)
 Abs   Z=28 Rmt= 1.388 Rnm= 1.460 K  shell
 Pot 1 Z= 7 Rmt= 0.933 Rnm= 1.143
 Pot 2 Z= 6 Rmt= 0.858 Rnm= 1.109
 Gam_ch=1.576E+00 H-L exch
 Mu= 5.401E+00 kf=2.312E+00 Vint=-1.496E+01 Rs_int= 1.569
 PATH  Rmax= 5.000,  Keep_limit= 0.00, Heap_limit 0.00  Pwcrit= 3.00%
      41 paths to process
    path     filename
       1     feff0001.dat
       2     feff0002.dat
       3     feff0003.dat
       4     feff0004.dat
       5     feff0005.dat
       6     feff0006.dat
       7     feff0007.dat
       8     feff0008.dat
       9     feff0009.dat
      10     feff0010.dat
      11     feff0011.dat
      12     feff0012.dat
      13     feff0013.dat
      14     feff0014.dat
      15     feff0015.dat
      16     feff0016.dat
      17     feff0017.dat
      18     feff0018.dat
      19     feff0019.dat
      20     feff0020.dat
      21     feff0021.dat
      22     feff0022.dat
      23     feff0023.dat
      24     feff0024.dat
      25     feff0025.dat
      26     feff0026.dat
      27     feff0027.dat
      28     feff0028.dat
      29     feff0029.dat
      30     feff0030.dat
      31     feff0031.dat
      32     feff0032.dat
      33     feff0033.dat
      34     feff0034.dat
      35     feff0035.dat
      36     feff0036.dat
      37     feff0037.dat
      38     feff0038.dat
      39     feff0039.dat
      40     feff0040.dat
      41     feff0041.dat
    Use all paths with cw amplitude ratio   6.00%
    S02  0.953  Global sig2  0.00000
 Done with module 6: DW + final sum over paths.



Sample spring.inp file

This file is described in Anna Poiarkova's thesis and not in the FEFF manual.
The file is needed only if idwopt=1 or 2 in DEBYE keyword (i.e. if Debye-Waller factors should be calculated).
turbo2feff generates this file automatically if a hessian is present in the control file.
 
* BACDUE.pdb, spring.inp
* force constants from UFF

*     res    wmax  dosfit  acut
VDOS  0.02    1     1.2     3
PRINT  5

STRETCHES
* i   j   k_ij    dR_ij(%)
0       1       102    1
0       2       140    1
3       5       454    2
2       7      1019    1
2       11      715    1
5       6       677    1
7       8       510    4

ANGLES
* i  j  k  ktheta   dtheta(%)

1      0       16      51.84137  1
1      0       23      73.29867  1
0      1       2       34.96747  1
1      2       6       90.01431  1
2      6       24      91.09171  1
2      6       7       81.96911  1

Note that the units of the force constants are N/m. Thus, force constants in kJ/mole/Å^2 should be divided by 6.0221367 (Avogadros number without any exponent).
1 N/m = 0.1 nN/Å = 0.01 mdyne/Å = 6.0221367 kJ/mole/Å^2 = 6.42294 10^-4 H/Bohr^2
In addition, they should be multiplied by 2, because they are real force constants U=k/2(x-x0)^2 => f=k(x-x0) and not the energy-derived force constants used by define (and Amber and CNS): U=k'(x-x0)^2 => f=2k'(x-x0)
The numbering of the atoms is the same as in the feff.inp file, but the absorber is #0 and the rest of the atoms are numbered starting from 1 (turbo2feff gives this numbering in the last column).
The last parameter in the row dR_ij is the tolerance in the bond lenght when searchin for a similar bond, measured in percentage deviation in the bond length.
The force constant of the angles is in 100*mdynÅ/rad^2. Once again, force constants in kJ/mole/rad^2 should be divided by 6.0221367. The angle force constants are usually not needed, but they have a clear influence on the DW factors and may make the fit more stable (less warnings).

VDOS command (needed only if idwopt=1):
PRINT gives the number of  prdenNNNN.dat files to be written (read only if idwopt=1).


Sample output file of DEBYE keyword, file s2_em.dat

If check0 is > 10% then the result is unreliable. Reduce disfit or increas wmax in the VDOS command (spring.inp file; e.g. to disfit=0.5 and wmax=3  ).


 CuS2N2 complex, BP/RI, SVP, 7/4-05
 temperature =  10.00  N_at =  25
 -----------------------------------------------------------------------
   ipath    nleg   sig2     mu_ipath  check0(%)
      1      2    0.00385    11.477     0.91
      2      2    0.00348    21.311     3.59
      3      2    0.00618    10.101     0.08
      4      2    0.00370    10.101     2.57
      5      3    0.00378     9.423     2.45
      6      3    0.00539     9.062     0.31
      7      2    0.00401    10.101     0.61
      8      4    0.00483     6.476     2.59
     10      2    0.00385    10.101     1.62
     12      3    0.00383    10.193     0.05
     13      2    0.00525    10.101     5.06
     15      3    0.00398     8.697     1.66
     16      3    0.00401     8.439     0.87
     18      3    0.00579     8.918     0.17
     20      3    0.00502     9.908     6.37
     21      3    0.00573     8.748     0.68
     23      3    0.00388     9.755     1.04
     24      4    0.00626     6.139     1.52
     25      4    0.00832     2.530     4.23
     26      4    0.00590     5.474     2.17
     27      4    0.01388     2.609     1.24
     30      2    0.00536    10.101     0.08
     31      3    0.00553     9.920     0.02
     32      3    0.00512     9.895     0.29
     34      4    0.00594     9.149     0.16
     35      4    0.00515     9.928     0.43
     36      4    0.00516     8.740     0.96
     39      4    0.00551     7.715     1.38
     44      2    0.00499    10.101     0.78
     45      2    0.00401    21.311     7.18
     46      3    0.00506    10.058     0.42
     48      4    0.00520     9.763     0.04


Compilation

Feff9.03
Failed to compile it with gfortran locally
(the program compiled when all options were removed, but the program did not work).

Instead compiled it with ifort on milleotto:
unzip feff90.zip
cd feff90
./Compile
cd bin
inserted FeffPath=/sw/pkg/bio/FEFF/feff90/bin in feff
cd /sw/pkg/bio/Bin
ln -fs /sw/pkg/bio/FEFF/feff90/bin/feff feff9

It does not seem possible to run spring any longer.


Feff82 and 8.3
The program is compiled by simply typing:

g77 feff82.f
mv a.out feff82

Works also with gfortran (17/2-11):
gfortran -o feff82 feff82.f


Running problem with DEBYE keyword

The program cannot run (if compiled with g77) with DEBYE keyword, owing to oversized unit numbers.
Do the following changes to feff82.f and recompile it:

15943c15943
<          iem = 31
---
>          iem = 111
15949c15949
<            irm1 = 41
---
>            irm1 =113
15953c15953
<            irm2 = 42
---
>            irm2 = 112
24418c24418
<          iem = 31
---
>          iem = 111
24422c24422
<          irm1 = 41
---
>          irm1 =111
24425c24425
<          irm2 = 42
---
>          irm2 = 112
24430c24430
<         icum = 43
---
>         icum = 113

Moreover, the parameter nsprx is set much too low for many complexes if the Seminario method is used (gives Segmentation fault or Memory fault, without any warnings):

27172c27172
<       parameter (nsprx = 400)
---
>       parameter (nsprx = 40)


A version without changes is feff82_original.f. It is compiled as feff82.x.
The version with the changes is feff82.f and feff82.