Calculates self-part of the intermediate scattering function over a specified range of wavenumbers. For a given wavenumber, the underlying code computes the function first over a wavevector corresponding to that wavenumber. It performs this computation at multiple such wavevectors corresponding to that wavenumber, and then averages over all such wavevectors to compute the result at the specified wavenumber.
where
The use of the cosine transform rather than the full fourier transform reflects the use of symmetry.
This list of wavevectors employed for a given wavenumber is determined in the following manner.
A three-dimensional cubic grid is defined in inverse space, with grid spacing equal to
<max_length_scale> variable specified below, unless that quantity is set to 0 or negative.
In that case L is set equal to the smallest dimension of the box.
This tunable choice of L is possible because the self-intermediate scattering function employs a difference in a particle's position rather than absolute positions, which is an inherently 'unwrapped' quantity in that it has no dependence on box size (in contrast, structure factor calculations, for example, must employ actual box dimensions for exact accuracy).
These wavevectors are then binned into bins corresponding to distinct wavenumbers, which correspond to spherical shells in three dimensional inverse space.
In 3-d space, this allows calculation of wavenumbers spaced more closely than
In averaging over wavevectors for a given wavenumber, a maximum number of wavevectors of 300 is employed for computational efficiency. This means that all wavevectors are employed for wavenumber indices up to 16; for higher indices a subset of 300 are employed. These 300 are randomly chosen from the set of all wavevectors. These wavevector lists are hard-coded into AMDAT for computational efficiency and are therefore the same each time AMDAT is run. This list of wavevectors employed can be found in the qvectors subdirectory of the AMDAT distribution.
isfs <output file> <first wavenumber index> <last wavenumber index> <geometry> <max_length_scale> <(optional) fullblock>
<target>
<first wavenumber index> and <last wavenumber index> give the limits of wave vectors to be calculated (<geometry> are xyz, xy, xz, yz, x, y, and z.
This chooses which dimensions in k-space to include in the calculation of the intermediate scattering function.
xyz computes the full radial three dimensional isf, xy, yz, and xz calculate two-dimensional in-plane radial isf's, and x, y, and z compute one-dimensional isf's.
<max_length_scale> determines the longest distance which will be decomposed into inverse space.
If a distance of 0 is given, the full box size is used.
<(optional) fullblock> is an optional argument that can be either 0 or 1.
The default is 0, in which case time spacings spanning multiple blocks use only the first time of each block.
A setting of 1 specifies that it should use all block times for times spanning blocks.
This may result in substantial computational time increases but offers the possibility of modestly increased data quality at very long times.