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

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

renamed flexible_cylinder_ex to _elliptical

  • Property mode set to 100644
File size: 2.5 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 Iqxy(double qx, double qy, double length, double kuhn_length,
5            double radius, double axis_ratio, double sld, double solvent_sld);
6double flexible_cylinder_ex_kernel(double q, double length, double kuhn_length,
7                                double radius, double axis_ratio, double sld,
8                                double solvent_sld);
9double elliptical_crosssection(double q, double a, double b);
10
11double form_volume(double length, double kuhn_length, double radius)
12{
13    return 1.0;
14}
15
16double
17elliptical_crosssection(double q, double a, double b)
18{
19    double summ=0.0;
20
21    for(int i=0;i<N_POINTS_76;i++) {
22        double zi = ( Gauss76Z[i] + 1.0 )*M_PI/4.0;
23        double sn, cn;
24        SINCOS(zi, sn, cn);
25        double arg = q*sqrt(a*a*sn*sn+b*b*cn*cn);
26        double yyy = pow((double)sas_J1c(arg),2);
27        yyy *= Gauss76Wt[i];
28        summ += yyy;
29    }
30
31    summ /= 2.0;
32    return(summ);
33
34}
35
36double flexible_cylinder_ex_kernel(double q,
37          double length,
38          double kuhn_length,
39          double radius,
40          double axis_ratio,
41          double sld,
42          double solvent_sld)
43{
44
45    double flex,crossSect, cont;
46
47    cont = sld - solvent_sld;
48    crossSect = elliptical_crosssection(q,radius,(radius*axis_ratio));
49
50    flex = Sk_WR(q,length,kuhn_length);
51    flex *= crossSect;
52    flex *= M_PI*radius*radius*axis_ratio*axis_ratio*length;
53    flex *= cont*cont;
54    flex *= 1.0e-4;
55
56    return flex;
57}
58
59double Iq(double q,
60          double length,
61          double kuhn_length,
62          double radius,
63          double axis_ratio,
64          double sld,
65          double solvent_sld)
66{
67
68    double result = flexible_cylinder_ex_kernel(q,
69                    length,
70                    kuhn_length,
71                    radius,
72                    axis_ratio,
73                    sld,
74                    solvent_sld);
75
76    return result;
77}
78
79double Iqxy(double qx, double qy,
80            double length,
81            double kuhn_length,
82            double radius,
83            double axis_ratio,
84            double sld,
85            double solvent_sld)
86{
87    double q;
88    q = sqrt(qx*qx+qy*qy);
89    double result = flexible_cylinder_ex_kernel(q,
90                    length,
91                    kuhn_length,
92                    radius,
93                    axis_ratio,
94                    sld,
95                    solvent_sld);
96
97    return result;
98}
Note: See TracBrowser for help on using the repository browser.