[Ifeffit] Re. Cofigurationally averaged EXAFS from MD

Marcus Karolewski karolewski at yahoo.com
Fri Apr 22 00:48:33 CDT 2011

> From: Francisco Garcia <garcia.ff.000 at gmail.com>
> I want to compute the ?average EXAFS spectra? using 500 snapshots of
> atomic coordinates from my MD simulations. 

Dear Francisco and others,

I am still exploring this area myself, but as suggested by Matt Newville, the best approach probably is to search through the MD configuration file for each absorber atom, generate its feff.inp file (based on a neighbour list), then execute FEFF and add the resulting chi(k) to an accumulator.

I have a Windows program that will do this for a system with up to 3 atom types (e.g. O, Zn, H only) for both FEFF 7 and 8. It is easy to use, but does not recognize bonds that cross periodic boundaries. It is thus necessary to specify a central region of interest that is representative of the "bulk" of the system. This could be a problem if you have used a small MD simulation cell.

Typically 10,000 absorbers require about 1 day of execution time, so doing 500 snapshots should be fairly easy. This is not the end of the fitting problem, unfortunately.

Before making a comparison of the "synthetic" XAFS spectrum with experimental data, you need to fit E0 and S02. FEFF cannot necessarily calculate these accurately, but they have no bearing on the accuracy of your MD structural model. 

I feel that the E0 and S02 fits are best done using experimental standards. Attempting to fit them without knowledge of structure (e.g. by alignment-type operations between experimental and MD data) produces only approximate values - such fits also attempt to compensate, inappropriately, for any MD-related errors.

After adjusting the MD-XAFS spectra for E0 and S02, you will likely find that the R-space peaks differ significantly from the experimental values in terms of position, height and width. Assuming your snapshots are representative of the canonical distribution, these remaining differences reflect the limitations of the potential. The structural sensitivity of XAFS is such that even quite small differences between potentials (e.g. cut-off distance) can produce visibly significant results.

There are at least 2 ways to compare the experimental and (adjusted) MD XAFS spectra. 

(a) Visible or least-squares comparison of the spectra (in the R range of interest).

(b) Direct extraction of cumulants from the MD data (by statistical analysis of atoms in the same region used to generate the XAFS), which are then used (with the inclusion of global scaling factors for dR and C2) to fit/reconstruct the experimental spectrum in Artemis (good MD data should produce not only good fits, but also scale factors near 1.0).

Please contact me directly if you are interested to discuss further, or in using the code. I have glossed over some minor details (e.g. input data format, FEFF versions, chik.dat quirks, how to extract cumulants).


Marcus Karolewski

Message: 2
Date: Mon, 11 Apr 2011 13:18:04 -0700
From: Francisco Garcia <garcia.ff.000 at gmail.com>
To: ifeffit at millenia.cars.aps.anl.gov
Subject: [Ifeffit] Strategy to obtain cofigurationally averaged EXAFS
    from    MD simulations
Message-ID: <BANLkTinqbsgn6_JL_iVTcL1dfN39g1_Pig at mail.gmail.com>
Content-Type: text/plain; charset=windows-1252

Dear users,

I want to compute the ?average EXAFS spectra? usin 500 snapshots of
atomic coordinates from my MD simulations. The idea is to compute the
EXAFS spectra for each snapshot and then average the spectra over all
snapshots (the so-called "MD EXAFS" approach).  I know how to use
Artemis to generate the EXAFS spectrum of a single snapshot. However,
generating the EXAFS data for each of the 500 snapshots individually
will be too time consuming and messy (this is essentially a
book-keeping approach). I was wondering if there is a time-saving
strategy/script for computing the average EXAFS instead of the
snapshot-by-snapshot approach. For example, is it possible to include
the coordinates of all the snapshots in a single feff.inp file and
feed it to Artemis? Or if I have the feff.inp file for each snapshot,
is it possible to write a script for Artemis that will compute each
EXAFS spectra individually and dump them in a specified directory?

Thank you very much.

More information about the Ifeffit mailing list