static double form_volume(double length_a, double b2a_ratio, double c2a_ratio) { double length_b = length_a * b2a_ratio; double length_c = length_a * c2a_ratio; double vol_shell = 2.0 * (length_a*length_b + length_a*length_c + length_b*length_c); return vol_shell; } static double effective_radius(int mode, double length_a, double b2a_ratio, double c2a_ratio) { if (mode == 1) { return cbrt(0.75*cube(length_a)*b2a_ratio*c2a_ratio/M_PI); } else if (mode == 2) { return 0.5 * length_a; } else if (mode == 3) { return 0.5 * length_a*b2a_ratio; } else if (mode == 4) { return 0.5 * length_a*c2a_ratio; } else if (mode == 5) { return length_a*sqrt(b2a_ratio/M_PI); } else if (mode == 6) { return 0.5*sqrt(square(length_a) * (1.0 + square(b2a_ratio))); } else { return 0.5*sqrt(square(length_a) * (1.0 + square(b2a_ratio) + square(c2a_ratio))); } } static void Fq(double q, double *F1, double *F2, double sld, double solvent_sld, double length_a, double b2a_ratio, double c2a_ratio) { const double length_b = length_a * b2a_ratio; const double length_c = length_a * c2a_ratio; const double a_half = 0.5 * length_a; const double b_half = 0.5 * length_b; const double c_half = 0.5 * length_c; //Integration limits to use in Gaussian quadrature const double v1a = 0.0; const double v1b = M_PI_2; //theta integration limits const double v2a = 0.0; const double v2b = M_PI_2; //phi integration limits double outer_sum_F1 = 0.0; double outer_sum_F2 = 0.0; for(int i=0; i