1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
static double form_volume(double radius, double fuzziness)
{
return M_4PI_3*cube(radius);
}
static double
radius_effective(int mode, double radius, double fuzziness)
{
switch (mode) {
default:
case 1: // radius
return radius;
case 2: // radius + fuzziness
return radius + fuzziness;
}
}
static void Fq(double q, double *F1, double *F2, double sld, double sld_solvent,
double radius, double fuzziness)
{
const double qr = q*radius;
const double bes = sas_3j1x_x(qr);
const double qf = exp(-0.5*square(q*fuzziness));
const double contrast = (sld - sld_solvent);
const double form = contrast * form_volume(radius,fuzziness) * bes * qf;
*F1 = 1.0e-2*form;
*F2 = 1.0e-4*form*form;
}
|