source: sasmodels/sasmodels/models/flexible_cylinder_elliptical.c @ 4962519

core_shell_microgelscostrafo411magnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since 4962519 was 4962519, checked in by Paul Kienzle <pkienzle@…>, 8 years ago

use square and cube instead of pow()

  • Property mode set to 100644
File size: 1.9 KB
Line 
1double form_volume(double length, double kuhn_length, double radius);
2double Iq(double q, double length, double kuhn_length, double radius,
3          double axis_ratio, double sld, double solvent_sld);
4double flexible_cylinder_ex_kernel(double q, double length, double kuhn_length,
5                                double radius, double axis_ratio, double sld,
6                                double solvent_sld);
7double elliptical_crosssection(double q, double a, double b);
8
9double form_volume(double length, double kuhn_length, double radius)
10{
11    return 1.0;
12}
13
14double
15elliptical_crosssection(double q, double a, double b)
16{
17    double summ=0.0;
18
19    for(int i=0;i<N_POINTS_76;i++) {
20        double zi = ( Gauss76Z[i] + 1.0 )*M_PI_4;
21        double sn, cn;
22        SINCOS(zi, sn, cn);
23        double arg = q*sqrt(a*a*sn*sn + b*b*cn*cn);
24        double yyy = sas_J1c(arg);
25        summ += Gauss76Wt[i] * yyy * yyy;
26    }
27
28    summ /= 2.0;
29    return(summ);
30
31}
32
33double flexible_cylinder_ex_kernel(double q,
34          double length,
35          double kuhn_length,
36          double radius,
37          double axis_ratio,
38          double sld,
39          double solvent_sld)
40{
41
42    double flex,crossSect, cont;
43
44    cont = sld - solvent_sld;
45    crossSect = elliptical_crosssection(q,radius,(radius*axis_ratio));
46
47    flex = Sk_WR(q,length,kuhn_length);
48    flex *= crossSect;
49    flex *= M_PI*radius*radius*axis_ratio*axis_ratio*length;
50    flex *= cont*cont;
51    flex *= 1.0e-4;
52
53    return flex;
54}
55
56double Iq(double q,
57          double length,
58          double kuhn_length,
59          double radius,
60          double axis_ratio,
61          double sld,
62          double solvent_sld)
63{
64
65    double result = flexible_cylinder_ex_kernel(q,
66                    length,
67                    kuhn_length,
68                    radius,
69                    axis_ratio,
70                    sld,
71                    solvent_sld);
72
73    return result;
74}
75
Note: See TracBrowser for help on using the repository browser.