Skip to content
Snippets Groups Projects

Optimize integrands in form factor quadrature

Merged Wuttke, Joachim requested to merge hemi into main
1 file
+ 4
5
Compare changes
  • Side-by-side
  • Inline
@@ -46,7 +46,8 @@ complex_t HemiEllipsoid::formfactor_at_bottom(C3 q) const
const double R = m_radius_x;
const double W = m_radius_y;
const double H = m_height;
const complex_t G = std::sqrt((q.x() * R)*(q.x() * R) + (q.y() * W) * (q.y() * W));
const complex_t G = std::sqrt((q.x() * R) * (q.x() * R) + (q.y() * W) * (q.y() * W));
const complex_t HQ = q.z() * H;
if (std::abs(q.mag()) <= std::numeric_limits<double>::epsilon())
return M_TWOPI * R * W * H / 3.;
@@ -54,10 +55,8 @@ complex_t HemiEllipsoid::formfactor_at_bottom(C3 q) const
return M_TWOPI * H * R * W
* ComplexIntegrator().integrate(
[=](double z) {
complex_t gamma = G * std::sqrt(1.0 - z * z);
complex_t J1_gamma_div_gamma = Math::Bessel::J1c(gamma);
return (1. - z*z) * J1_gamma_div_gamma * exp_I(q.z() * H * z);
const double cz = 1 - z * z;
return cz * Math::Bessel::J1c(G * std::sqrt(cz)) * exp_I(HQ * z);
},
0., 1.);
}
Loading