Code for simulating EXAFS calculations from molecular dynamics trajectories or normal modes using FEFF
Expectra is program to simulate EXAFS from the outputs of molecular dynamics simulations. It also has the ability to to sample structures based on a harmonic potential generated from a normal modes calculation.
The EXAFS multiple scattering calculations are performed using FEFF6-lite, which was written at the University of Washington by J.J. Rehr and co-workers.1
- J.J. Rehr, S.I. Zabinsky and R.C. Albers, “High-order multiple scattering calculations of x-ray-absorption fine structure”, Phys. Rev. Lett. 69, 3397 (1992).
- MPI (e.g. OpenMPI or MPICH)
This program is distributed as a Python package. It requires a Fortran compiler (e.g. gfortran) to build the FEFF6-lite program that is redistributed with the code. A MPI library (e.g. OpenMPI) is also required.
The first step is to install Python, GFortran, and MPICH. On Ubuntu this can be accomplished like so:
$ sudo apt-get install build-essential gfortran mpich python python-pip
Once the dependencies are installed expectra (and the Python packages it depends on) can be installed using pip:
$ pip install --user expectra
usage: expectra [-h] [--first-shell] [--neighbor-cutoff DISTANCE] [--multiple-scattering] [--rmax DISTANCE] [--S02 FACTOR] [--energy-shift ENERGY] [--absorber ELEMENT] [--ignore-elements ELEMENTS] [--edge EDGE] [--skip SKIP] [--every EVERY] TRAJ [TRAJ ...] positional arguments: TRAJ trajectory file (POSCAR, con, xyz) optional arguments: -h, --help show this help message and exit --first-shell a single scattering calculation that uses an automatically calculated reference path (default: True) --neighbor-cutoff DISTANCE 1st neighbor cutoff distance (default: 3.4) --multiple-scattering --rmax DISTANCE maximum scattering half-path length --S02 FACTOR amplitude reduction factor --energy-shift ENERGY energy shift to apply in eV --absorber ELEMENT atomic symbol of the xray absorber --ignore-elements ELEMENTS comma delimited list of elements to ignore in the scattering calculation --edge EDGE one of K, L1, L2, L3 --skip SKIP number of frames to skip at the beginning --every EVERY number of frames to between each step