23 IFTDecayFunction1D::IFTDecayFunction1D(
const NodeMeta& meta,
const std::vector<double>& PValues)
24 :
INode(nodeMetaUnion({{
"DecayLength",
"nm",
"half width", 0, INF, 1.}}, meta), PValues),
25 m_decay_length(m_P[0])
33 FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(
const std::vector<double> P)
38 FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(
double decay_length)
48 double FTDecayFunction1DCauchy::evaluate(
double q)
const
50 double sum_sq = q * q * m_decay_length * m_decay_length;
51 return m_decay_length * 2.0 / (1.0 + sum_sq);
58 FTDecayFunction1DGauss::FTDecayFunction1DGauss(
const std::vector<double> P)
63 FTDecayFunction1DGauss::FTDecayFunction1DGauss(
double decay_length)
73 double FTDecayFunction1DGauss::evaluate(
double q)
const
75 double sum_sq = q * q * m_decay_length * m_decay_length;
76 return m_decay_length * std::sqrt(M_TWOPI) * std::exp(-sum_sq / 2.0);
83 FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(
const std::vector<double> P)
88 FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(
double decay_length)
98 double FTDecayFunction1DTriangle::evaluate(
double q)
const
101 return m_decay_length * sincqw2 * sincqw2;
108 FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(
const std::vector<double> P)
110 {
"FTDecayFunction1DVoigt",
112 {{
"Eta",
"",
"balances between Gauss (eta=0) and Cauchy (eta=1) limiting cases", -INF,
119 FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(
double decay_length,
double eta)
129 double FTDecayFunction1DVoigt::evaluate(
double q)
const
131 double sum_sq = q * q * m_decay_length * m_decay_length;
132 return m_eta * m_decay_length * std::sqrt(M_TWOPI) * std::exp(-sum_sq / 2.0)
133 + (1.0 - m_eta) * m_decay_length * 2.0 / (1.0 + sum_sq);
Defines classes IFTDecayFunction1D, IFTDecayFunction2D,.
Defines namespace MathFunctions.
One-dimensional Cauchy decay function in reciprocal space; corresponds to exp(-|x|/decay_length) in r...
One-dimensional Gauss decay function in reciprocal space; corresponds to exp[-x^2/(2*decay_length^2)]...
One-dimensional triangle decay function in reciprocal space; corresponds to 1-|x|/decay_length if |x|...
One-dimensional pseudo-Voigt decay function in reciprocal space; corresponds to eta*Gauss + (1-eta)*C...
Interface for a one-dimensional decay function, with evaluate(q) returning the Fourier transform,...
Base class for tree-like structures containing parameterized objects.
double sinc(double x)
sinc function: