Skip to content
Snippets Groups Projects
Commit 6385d7ab authored by Van Herck, Walter's avatar Van Herck, Walter
Browse files

Replace Bessel functions with their complex version where needed

parent 92786ae8
No related branches found
No related tags found
No related merge requests found
......@@ -59,7 +59,7 @@ complex_t FormFactorCone::Integrand(double Z, void* params) const
double Rz = m_radius -Z/std::tan(m_alpha);
complex_t q_p = m_q.magxy(); // sqrt(x*x + y*y)
return Rz*Rz*MathFunctions::Bessel_C1(std::abs(q_p*Rz)) *
return Rz*Rz*MathFunctions::Bessel_C1(q_p*Rz) *
std::exp(complex_t(0.0, 1.0)*m_q.z()*Z);
}
......
......@@ -54,7 +54,7 @@ complex_t FormFactorCylinder::evaluate_for_q(const cvector_t& q) const
complex_t qrR = q.magxy()*R;
complex_t J1_qrR_div_qrR = std::abs(qrR) > Numeric::double_epsilon ?
MathFunctions::Bessel_J1(std::abs(qrR))/(std::abs(qrR)) :
MathFunctions::Bessel_C1(qrR) :
0.5;
complex_t radial_part = 2*M_PI*R*R*J1_qrR_div_qrR;
......
......@@ -41,7 +41,7 @@ complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(const cvector_t& q) cons
complex_t Fz = std::exp(complex_t(0.0, 1.0)*qzHdiv2)
*MathFunctions::Sinc(qzHdiv2);
complex_t gamma = std::sqrt((qxRa)*(qxRa) + (qyRb)*(qyRb));
complex_t J1_gamma_div_gamma = MathFunctions::Bessel_C1(std::abs(gamma));
complex_t J1_gamma_div_gamma = MathFunctions::Bessel_C1(gamma);
return 2.*M_PI *m_radius_a*m_radius_b*m_height * Fz*J1_gamma_div_gamma;
......
......@@ -58,7 +58,7 @@ complex_t FormFactorFullSpheroid::Integrand(double Z, void* params) const
double Rz = R*std::sqrt(1-4.0*Z*Z/(H*H));
complex_t qrRz = m_q.magxy()*Rz;
complex_t J1_qrRz_div_qrRz = MathFunctions::Bessel_C1(std::abs(qrRz));
complex_t J1_qrRz_div_qrRz = MathFunctions::Bessel_C1(qrRz);
return Rz*Rz* J1_qrRz_div_qrRz *std::cos(m_q.z()*Z);
}
......
......@@ -68,7 +68,7 @@ complex_t FormFactorHemiEllipsoid::Integrand(double Z, void* params) const
complex_t qyWz = m_q.y()*Wz;
complex_t gamma = std::sqrt (qxRz*qxRz + qyWz*qyWz);
complex_t J1_gamma_div_gamma = MathFunctions::Bessel_C1(std::abs(gamma));
complex_t J1_gamma_div_gamma = MathFunctions::Bessel_C1(gamma);
complex_t exp_imag = std::exp(complex_t(0.0,1.0)*m_q.z()*Z);
return Rz * Wz * J1_gamma_div_gamma *exp_imag;
......
......@@ -57,7 +57,7 @@ complex_t FormFactorSphere::Integrand(double Z, void* params) const
(void)params; // to avoid unused-variable warning
double Rz = std::sqrt(std::abs(m_radius*m_radius-Z*Z) );
complex_t q_p = m_q.magxy(); // sqrt(x*x + y*y)
return Rz*Rz*MathFunctions::Bessel_C1(std::abs(q_p*Rz)) *
return Rz*Rz*MathFunctions::Bessel_C1(q_p*Rz) *
std::exp(complex_t(0.0, 1.0)*m_q.z()*Z);
}
......
......@@ -60,7 +60,7 @@ complex_t FormFactorSpheroid::Integrand(double Z, void* params) const
double Rz = std::sqrt(R*R-Z*Z/(fp*fp));
complex_t qrRz = m_q.magxy()*Rz;
complex_t J1_qrRz_div_qrRz = MathFunctions::Bessel_C1(std::abs(qrRz));
complex_t J1_qrRz_div_qrRz = MathFunctions::Bessel_C1(qrRz);
return Rz * Rz * J1_qrRz_div_qrRz * std::exp(complex_t(0.0,1.0)*m_q.z()*Z);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment