faunus
Public Member Functions | List of all members
Faunus::Scatter::DebyeFormula< Tformfactor, T > Class Template Reference

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 ()
 

Detailed Description

template<class Tformfactor, std::floating_point T = float>
class Faunus::Scatter::DebyeFormula< Tformfactor, T >

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:

See also
http://dx.doi.org/10.1016/S0022-2860(96)09302-7

Member Function Documentation

◆ getIntensity()

template<class Tformfactor , std::floating_point T = float>
auto Faunus::Scatter::DebyeFormula< Tformfactor, T >::getIntensity ( )
inline
Returns
a map containing q (key) and average intensity (value)

◆ getQMeshParameters()

template<class Tformfactor , std::floating_point T = float>
auto Faunus::Scatter::DebyeFormula< Tformfactor, T >::getQMeshParameters ( )
inline
Returns
a tuple of min, max, and step parameters of a q-mash

◆ sample()

template<class Tformfactor , std::floating_point T = float>
template<class Tpvec >
void Faunus::Scatter::DebyeFormula< Tformfactor, T >::sample ( const Tpvec &  p,
const T  weight = 1,
const T  volume = -1 
)
inline

Sample I(q) and add to average.

Parameters
pparticle vector
weightweight of sampled configuration in biased simulations
volumesimulation 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

See also
https://debyer.readthedocs.org/en/latest/.

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.


The documentation for this class was generated from the following file: