49 if (std::abs(q.mag()) <= std::numeric_limits<double>::epsilon())
59 double Rz =
R * std::sqrt(1.0 - Z * Z / (
H *
H));
60 double Wz = W * std::sqrt(1.0 - Z * Z / (
H *
H));
62 complex_t qxRz = q.x() * Rz;
63 complex_t qyWz = q.y() * Wz;
65 complex_t
gamma = std::sqrt(qxRz * qxRz + qyWz * qyWz);
68 return Rz * Wz * J1_gamma_div_gamma * exp_I(q.z() * Z);
Defines Bessel functions in namespace Math.
Defines M_PI and some more mathematical constants.
Defines class HemiEllipsoid.
Defines classes RealIntegrator, ComplexIntegrator.
Defines class TruncatedEllipsoidNet.
To integrate a complex function of a real variable.
complex_t integrate(const std::function< complex_t(double)> &f, double lmin, double lmax)
An hemi ellipsoid, obtained by truncating a full ellipsoid in the middle plane spanned by two princip...
const double & m_radius_x
complex_t formfactor_at_bottom(C3 q) const override
const double & m_radius_y
double radialExtension() const override
Returns the (approximate in some cases) radial size of the particle of this form factor's shape....
HemiEllipsoid(double radius_x, double radius_y, double height)
void checkNodeArgs() const
Raises exception if a parameter value is invalid.
double J1c(double x)
Bessel function J1(x)/x.