27 {
"OmegaY",
"nm",
"Half-width along y axis", 0,
INF, 1.},
29 "direct-space orientation with respect to the first lattice vector",
33 m_omega_x(m_P[0]), m_omega_y(m_P[1]), m_gamma(m_P[2])
63 return std::pow(1.0 +
sumsq(qx, qy), -1.5);
92 return std::exp(-
sumsq(qx, qy) / 2);
121 double scaled_q = std::sqrt(
sumsq(qx, qy));
151 double scaled_q = std::sqrt(
sumsq(qx, qy));
152 if (scaled_q < std::numeric_limits<double>::epsilon())
153 return 1.0 - 3.0 * scaled_q * scaled_q / 40.0;
171 {
"FTDistribution2DVoigt",
173 {{
"Eta",
"",
"balances between Gauss (eta=0) and Cauchy (eta=1) limiting cases", -
INF,
193 double sum_sq =
sumsq(qx, qy);
194 return m_eta * std::exp(-sum_sq / 2) + (1.0 -
m_eta) * std::pow(1.0 + sum_sq, -1.5);
201 std::ostringstream ostr;
202 ostr <<
"FTDistribution2DVoigt::createSampler() -> Error in class initialization";
203 ostr <<
"\n\n Has not been implemented yet...stay tuned!";
Defines many exception classes in namespace Exceptionss.
Defines interface class IFTDistribution2D, and children thereof.
NodeMeta nodeMetaUnion(const std::vector< ParaMeta > &base, const NodeMeta &other)
Defines classes RealIntegrator, ComplexIntegrator.
Defines namespace MathFunctions.
Two-dimensional Cauchy distribution in Fourier space; corresponds to a normalized exp(-r) in real spa...
FTDistribution2DCauchy(const std::vector< double > P)
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
FTDistribution2DCauchy * clone() const final
std::unique_ptr< IDistribution2DSampler > createSampler() const final
Two-dimensional cone distribution in Fourier space; corresponds to 1-r if r<1 (and 0 otherwise) in re...
std::unique_ptr< IDistribution2DSampler > createSampler() const final
FTDistribution2DCone(const std::vector< double > P)
FTDistribution2DCone * clone() const final
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
Two-dimensional gate distribution in Fourier space; corresponds to normalized constant if r<1 (and 0 ...
FTDistribution2DGate(const std::vector< double > P)
FTDistribution2DGate * clone() const final
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
std::unique_ptr< IDistribution2DSampler > createSampler() const final
Two-dimensional Gauss distribution in Fourier space; corresponds to normalized exp(-r^2/2) in real sp...
FTDistribution2DGauss(const std::vector< double > P)
std::unique_ptr< IDistribution2DSampler > createSampler() const final
FTDistribution2DGauss * clone() const final
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
Two-dimensional Voigt distribution in Fourier space; corresponds to eta*Gauss + (1-eta)*Cauchy.
FTDistribution2DVoigt(const std::vector< double > P)
double evaluate(double qx, double qy) const final
evaluate Fourier transformed distribution for q in X,Y coordinates the original distribution (in real...
FTDistribution2DVoigt * clone() const final
std::unique_ptr< IDistribution2DSampler > createSampler() const final
Interface for two-dimensional distributions in Fourier space.
IFTDistribution2D(const NodeMeta &meta, const std::vector< double > &PValues)
double sumsq(double qx, double qy) const
Base class for tree-like structures containing parameterized objects.
To integrate a real function of a real variable.
double integrate(const std::function< double(double)> &f, double lmin, double lmax)
double Bessel_J0(double x)
Bessel function of the first kind and order 0.
double Bessel_J1c(double x)
Bessel function Bessel_J1(x)/x.