source: sasmodels/sasmodels/models/fractal_core_shell.c @ 7d4b2ae

core_shell_microgelscostrafo411magnetic_modelrelease_v0.94release_v0.95ticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since 7d4b2ae was 7d4b2ae, checked in by piotr, 8 years ago

Added fractal_core_shell

  • Property mode set to 100644
File size: 2.0 KB
Line 
1double form_volume(double radius, double thickness);
2
3double Iq(double q,
4          double radius,
5          double thickness,
6          double core_sld,
7          double shell_sld,
8          double solvent_sld,
9          double volfraction,
10          double frac_dim,
11          double cor_length);
12
13double Iqxy(double qx, double qy,
14            double radius,
15            double thickness,
16            double core_sld,
17            double shell_sld,
18            double solvent_sld,
19            double volfraction,
20            double frac_dim,
21            double cor_length);
22
23double form_volume(double radius, double thickness)
24{
25    return 4.0 * M_PI / 3.0 * pow((radius + thickness), 3);
26}
27
28double Iq(double q,
29          double radius,
30          double thickness,
31          double core_sld,
32          double shell_sld,
33          double solvent_sld,
34          double volfraction,
35          double frac_dim,
36          double cor_length) {
37
38
39   double intensity = core_shell_kernel(q,
40                              radius,
41                              thickness,
42                              core_sld,
43                              shell_sld,
44                              solvent_sld);
45    //calculate S(q)
46    double frac_1 = frac_dim-1.0;
47    double qr = q*radius;
48
49    double t1 = frac_dim*exp(lanczos_gamma(frac_1))*sin(frac_1*atan(q*cor_length));
50    double t2 = (1.0 + 1.0/(q*cor_length)/(q*cor_length));
51    double t3 = pow(qr, frac_dim) * pow(t2, (frac_1/2.0));
52    double sq = t1/t3;
53    sq += 1.0;
54
55    return sq*intensity*volfraction;
56}
57
58double Iqxy(double qx, double qy,
59            double radius,
60            double thickness,
61            double core_sld,
62            double shell_sld,
63            double solvent_sld,
64            double volfraction,
65            double frac_dim,
66            double cor_length) {
67
68    const double q = sqrt(qx*qx+qy*qy);
69    return Iq(q,
70              radius,
71              thickness,
72              core_sld,
73              shell_sld,
74              solvent_sld,
75              volfraction,
76              frac_dim,
77              cor_length);
78
79}
80
81
Note: See TracBrowser for help on using the repository browser.