File: fuzzy_sphere.c

package info (click to toggle)
mccode 3.5.19%2Bds5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,113,256 kB
  • sloc: ansic: 40,697; python: 25,137; yacc: 8,438; sh: 5,405; javascript: 4,596; lex: 1,632; cpp: 742; perl: 296; lisp: 273; makefile: 226; fortran: 132
file content (28 lines) | stat: -rw-r--r-- 763 bytes parent folder | download | duplicates (6)
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;
}