source: sasmodels/sasmodels/models/barbell.py @ b0c4271

core_shell_microgelscostrafo411magnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since b0c4271 was b0c4271, checked in by butler, 8 years ago

model documentation final format through core_shell_bicelle re: #646

  • Property mode set to 100644
File size: 4.7 KB
Line 
1r"""
2Definition
3----------
4
5Calculates the scattering from a barbell-shaped cylinder.  Like
6:ref:`capped-cylinder`, this is a sphereocylinder with spherical end
7caps that have a radius larger than that of the cylinder, but with the center
8of the end cap radius lying outside of the cylinder. See the diagram for
9the details of the geometry and restrictions on parameter values.
10
11.. figure:: img/barbell_geometry.jpg
12
13    Barbell geometry, where $r$ is *radius*, $R$ is *radius_bell* and
14    $L$ is *length*. Since the end cap radius $R \geq r$ and by definition
15    for this geometry $h < 0$, $h$ is then defined by $r$ and $R$ as
16    $h = - \sqrt{R^2 - r^2}$
17
18The scattered intensity $I(q)$ is calculated as
19
20.. math::
21
22    I(q) = \frac{\Delta \rho^2}{V} \left<A^2(q)\right>
23
24where the amplitude $A(q)$ is given as
25
26.. math::
27
28    A(q) =&\ \pi r^2L
29        \frac{\sin\left(\tfrac12 qL\cos\theta\right)}
30             {\tfrac12 qL\cos\theta}
31        \frac{2 J_1(qr\sin\theta)}{qr\sin\theta} \\
32        &\ + 4 \pi R^3 \int_{-h/R}^1 dt
33        \cos\left[ q\cos\theta
34            \left(Rt + h + {\tfrac12} L\right)\right]
35        \times (1-t^2)
36        \frac{J_1\left[qR\sin\theta \left(1-t^2\right)^{1/2}\right]}
37             {qR\sin\theta \left(1-t^2\right)^{1/2}}
38
39The $\left<\ldots\right>$ brackets denote an average of the structure over
40all orientations. $\left<A^2(q)\right>$ is then the form factor, $P(q)$.
41The scale factor is equivalent to the volume fraction of cylinders, each of
42volume, $V$. Contrast $\Delta\rho$ is the difference of scattering length
43densities of the cylinder and the surrounding solvent.
44
45The volume of the barbell is
46
47.. math::
48
49    V = \pi r_c^2 L + 2\pi\left(\tfrac23R^3 + R^2h-\tfrac13h^3\right)
50
51
52and its radius of gyration is
53
54.. math::
55
56    R_g^2 =&\ \left[ \tfrac{12}{5}R^5
57        + R^4\left(6h+\tfrac32 L\right)
58        + R^2\left(4h^2 + L^2 + 4Lh\right)
59        + R^2\left(3Lh^2 + \tfrac32 L^2h\right) \right. \\
60        &\ \left. + \tfrac25 h^5 - \tfrac12 Lh^4 - \tfrac12 L^2h^3
61        + \tfrac14 L^3r^2 + \tfrac32 Lr^4 \right]
62        \left( 4R^3 6R^2h - 2h^3 + 3r^2L \right)^{-1}
63
64.. note::
65    The requirement that $R \geq r$ is not enforced in the model! It is
66    up to you to restrict this during analysis.
67
68The 2D scattering intensity is calculated similar to the 2D cylinder model.
69
70.. figure:: img/cylinder_angle_definition.jpg
71
72    Definition of the angles for oriented 2D barbells.
73
74.. figure:: img/cylinder_angle_projection.jpg
75    :width: 600px
76
77    Examples of the angles for oriented pp against the detector plane.
78
79References
80----------
81
82.. [#] H Kaya, *J. Appl. Cryst.*, 37 (2004) 37 223-230
83.. [#] H Kaya and N R deSouza, *J. Appl. Cryst.*, 37 (2004) 508-509 (addenda
84   and errata)
85
86Authorship and Verification
87----------------------------
88
89* **Author:** NIST IGOR/DANSE **Date:** pre 2010
90* **Last Modified by:** Paul Butler **Date:** March 20, 2016
91* **Last Reviewed by:** Paul Butler **Date:** March 20, 2016
92"""
93from numpy import inf
94
95name = "barbell"
96title = "Cylinder with spherical end caps"
97description = """
98    Calculates the scattering from a barbell-shaped cylinder.
99    That is a sphereocylinder with spherical end caps that have a radius larger
100    than that of the cylinder and the center of the end cap radius lies outside
101    of the cylinder.
102    Note: As the length of cylinder(bar) -->0,it becomes a dumbbell. And when
103    rad_bar = rad_bell, it is a spherocylinder.
104    It must be that rad_bar <(=) rad_bell.
105"""
106category = "shape:cylinder"
107# pylint: disable=bad-whitespace, line-too-long
108#             ["name", "units", default, [lower, upper], "type","description"],
109parameters = [["sld",         "1e-6/Ang^2",   4, [-inf, inf], "sld",         "Barbell scattering length density"],
110              ["sld_solvent", "1e-6/Ang^2",   1, [-inf, inf], "sld",         "Solvent scattering length density"],
111              ["radius_bell", "Ang",         40, [0, inf],    "volume",      "Spherical bell radius"],
112              ["radius",      "Ang",         20, [0, inf],    "volume",      "Cylindrical bar radius"],
113              ["length",      "Ang",        400, [0, inf],    "volume",      "Cylinder bar length"],
114              ["theta",       "degrees",     60, [-inf, inf], "orientation", "In plane angle"],
115              ["phi",         "degrees",     60, [-inf, inf], "orientation", "Out of plane angle"],
116             ]
117# pylint: enable=bad-whitespace, line-too-long
118
119source = ["lib/polevl.c", "lib/sas_J1.c", "lib/gauss76.c", "barbell.c"]
120
121# parameters for demo
122demo = dict(scale=1, background=0,
123            sld=6, sld_solvent=1,
124            radius_bell=40, radius=20, length=400,
125            theta=60, phi=60,
126            radius_pd=.2, radius_pd_n=5,
127            length_pd=.2, length_pd_n=5,
128            theta_pd=15, theta_pd_n=0,
129            phi_pd=15, phi_pd_n=0,
130           )
Note: See TracBrowser for help on using the repository browser.