source: sasmodels/sasmodels/models/core_shell_sphere.c @ edc9f8d

core_shell_microgelscostrafo411magnetic_modelrelease_v0.94release_v0.95ticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since edc9f8d was edc9f8d, checked in by Mathieu Doucet <doucetm@…>, 8 years ago

Converting core-shell sphere model

  • Property mode set to 100644
File size: 1.4 KB
Line 
1double form_volume(double radius, double thickness);
2double Iq(double q, double radius, double thickness, double core_sld, double shell_sld, double solvent_sld);
3double Iqxy(double qx, double qy, double radius, double thickness, double core_sld, double shell_sld, double solvent_sld);
4
5
6double Iq(double q, double radius, double thickness, double core_sld, double shell_sld, double solvent_sld) {
7    // Core first, then add in shell
8    const double core_qr = q * radius;
9    const double core_contrast = core_sld - shell_sld;
10    const double core_bes = sph_j1c(core_qr);
11    const double core_volume = 4.0 * M_PI / 3.0 * radius * radius * radius;
12    double f = core_volume * core_bes * core_contrast;
13
14    // Now the shell
15    const double shell_qr = q * (radius + thickness);
16    const double shell_contrast = shell_sld - solvent_sld;
17    const double shell_bes = sph_j1c(shell_qr);
18    const double shell_volume = 4.0 * M_PI / 3.0 * pow((radius + thickness), 3);
19    f += shell_volume * shell_bes * shell_contrast;
20    return f * f * 1.0e-4;
21}
22
23double Iqxy(double qx, double qy, double radius, double thickness, double core_sld, double shell_sld, double solvent_sld) {
24    const double q = sqrt(qx*qx+qy*qy);
25    return Iq(q, radius, thickness, core_sld, shell_sld, solvent_sld);
26}
27
28double form_volume(double radius, double thickness)
29{
30    return 4.0 * M_PI / 3.0 * pow((radius + thickness), 3);
31}
Note: See TracBrowser for help on using the repository browser.