|
faunus
|
Calculate scattering intensity, I(q), on a mesh using the Debye formula. More...
#include <scatter.h>
Public Member Functions | |
| DebyeFormula (T q_min, T q_max, T q_step, T r_cutoff) | |
| DebyeFormula (T q_min, T q_max, T q_step) | |
| DebyeFormula (const json &j) | |
| template<class Tpvec > | |
| void | sample (const Tpvec &p, const T weight=1, const T volume=-1) |
| Sample I(q) and add to average. More... | |
| auto | getQMeshParameters () |
| auto | getIntensity () |
Calculate scattering intensity, I(q), on a mesh using the Debye formula.
It is important to note that distances should be calculated without periodicity and if molecules cross periodic boundaries, these must be made whole before performing the analysis.
The JSON object is scanned for the following keywords:
qmin minimum q value (1/angstrom)qmax maximum q value (1/angstrom)dq q mesh spacing (1/angstrom)cutoff cutoff distance (angstrom); Experimental!
|
inline |
|
inline |
|
inline |
Sample I(q) and add to average.
| p | particle vector |
| weight | weight of sampled configuration in biased simulations |
| volume | simulation volume (angstrom cubed) used only for cut-off correction |
An isotropic correction is added beyond a given cut-off distance. For physics details see for example
O(N^2) * O(M) complexity where N is the number of particles and M the number of mesh points. The quadratic complexity in N comes from the fact that the radial distribution function has to be computed. The current implementation supports OpenMP parallelization. Roughly half of the execution time is spend on computing sin values, e.g., in sinf_avx2.
1.8.13