source: sasmodels/sasmodels/models/core_shell_bicelle.py @ 71a28f4

core_shell_microgelscostrafo411magnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since 71a28f4 was 71a28f4, checked in by wojciech, 7 years ago

Removed nowrap statement

  • Property mode set to 100644
File size: 6.1 KB
Line 
1r"""
2Definition
3----------
4
5This model provides the form factor for a circular cylinder with a
6core-shell scattering length density profile. Thus this is a variation
7of a core-shell cylinder or disc where the shell on the walls and ends
8may be of different thicknesses and scattering length densities. The form
9factor is normalized by the particle volume.
10
11
12.. figure:: img/core_shell_bicelle_geometry.png
13
14    Schematic cross-section of bicelle. Note however that the model here
15    calculates for rectangular, not curved, rims as shown below.
16
17.. figure:: img/core_shell_bicelle_parameters.png
18
19   Cross section of cylindrical symmetry model used here. Users will have
20   to decide how to distribute "heads" and "tails" between the rim, face
21   and core regions in order to estimate appropriate starting parameters.
22
23Given the scattering length densities (sld) $\rho_c$, the core sld, $\rho_f$,
24the face sld, $\rho_r$, the rim sld and $\rho_s$ the solvent sld, the
25scattering length density variation along the cylinder axis is:
26
27.. math::
28
29    \rho(r) =
30      \begin{cases}
31      &\rho_c \text{ for } 0 \lt r \lt R; -L \lt z\lt L \\[1.5ex]
32      &\rho_f \text{ for } 0 \lt r \lt R; -(L+2t) \lt z\lt -L;
33      L \lt z\lt (L+2t) \\[1.5ex]
34      &\rho_r\text{ for } 0 \lt r \lt R; -(L+2t) \lt z\lt -L; L \lt z\lt (L+2t)
35      \end{cases}
36
37The form factor for the bicelle is calculated in cylindrical coordinates, where
38$\alpha$ is the angle between the $Q$ vector and the cylinder axis, to give:
39
40.. math::
41
42    I(Q,\alpha) = \frac{\text{scale}}{V_t} \cdot
43        F(Q,\alpha)^2.sin(\alpha) + \text{background}
44
45where
46
47.. math::
48    :nowrap:
49
50    \begin{align}
51    F(Q,\alpha) = &\bigg[
52    (\rho_c - \rho_f) V_c \frac{2J_1(QRsin \alpha)}{QRsin\alpha}\frac{sin(QLcos\alpha/2)}{Q(L/2)cos\alpha} \\
53    &+(\rho_f - \rho_r) V_{c+f} \frac{2J_1(QRsin\alpha)}{QRsin\alpha}\frac{sin(Q(L/2+t_f)cos\alpha)}{Q(L/2+t_f)cos\alpha} \\
54    &+(\rho_r - \rho_s) V_t \frac{2J_1(Q(R+t_r)sin\alpha)}{Q(R+t_r)sin\alpha}\frac{sin(Q(L/2+t_f)cos\alpha)}{Q(L/2+t_f)cos\alpha}
55    \bigg]
56    \end{align}
57
58where $V_t$ is the total volume of the bicelle, $V_c$ the volume of the core,
59$V_{c+f}$ the volume of the core plus the volume of the faces, $R$ is the radius
60of the core, $L$ the length of the core, $t_f$ the thickness of the face, $t_r$
61the thickness of the rim and $J_1$ the usual first order bessel function.
62
63The output of the 1D scattering intensity function for randomly oriented
64cylinders is then given by integrating over all possible $\theta$ and $\phi$.
65
66The *theta* and *phi* parameters are not used for the 1D output.
67Our implementation of the scattering kernel and the 1D scattering intensity
68use the c-library from NIST.
69
70.. figure:: img/cylinder_angle_definition.jpg
71
72    Definition of the angles for the oriented core shell bicelle tmodel.
73
74
75References
76----------
77
78.. [#] D Singh (2009). *Small angle scattering studies of self assembly in
79   lipid mixtures*, John's Hopkins University Thesis (2009) 223-225. `Available
80   from Proquest <http://search.proquest.com/docview/304915826?accountid
81   =26379>`_
82
83Authorship and Verification
84----------------------------
85
86* **Author:** NIST IGOR/DANSE **Date:** pre 2010
87* **Last Modified by:** Paul Butler **Date:** September 30, 2016
88* **Last Reviewed by:** Richard Heenan **Date:** January 4, 2017
89"""
90
91from numpy import inf, sin, cos
92
93name = "core_shell_bicelle"
94title = "Circular cylinder with a core-shell scattering length density profile.."
95description = """
96    P(q,alpha)= (scale/Vs)*f(q)^(2) + bkg,  where:
97    f(q)= Vt(sld_rim - sld_solvent)* sin[qLt.cos(alpha)/2]
98    /[qLt.cos(alpha)/2]*J1(qRout.sin(alpha))
99    /[qRout.sin(alpha)]+
100    (sld_core-sld_face)*Vc*sin[qLcos(alpha)/2][[qL
101    *cos(alpha)/2]*J1(qRc.sin(alpha))
102    /qRc.sin(alpha)]+
103    (sld_face-sld_rim)*(Vc+Vf)*sin[q(L+2.thick_face).
104    cos(alpha)/2][[q(L+2.thick_face)*cos(alpha)/2]*
105    J1(qRc.sin(alpha))/qRc.sin(alpha)]
106
107    alpha:is the angle between the axis of
108    the cylinder and the q-vector
109    Vt = pi.(Rc + thick_rim)^2.Lt : total volume
110    Vc = pi.Rc^2.L :the volume of the core
111    Vf = 2.pi.Rc^2.thick_face
112    Rc = radius: is the core radius
113    L: the length of the core
114    Lt = L + 2.thick_face: total length
115    Rout = radius + thick_rim
116    sld_core, sld_rim, sld_face:scattering length
117    densities within the particle
118    sld_solvent: the scattering length density
119    of the solvent
120    bkg: the background
121    J1: the first order Bessel function
122    theta: axis_theta of the cylinder
123    phi: the axis_phi of the cylinder...
124        """
125category = "shape:cylinder"
126
127# pylint: disable=bad-whitespace, line-too-long
128#             ["name", "units", default, [lower, upper], "type", "description"],
129parameters = [
130    ["radius",         "Ang",       80, [0, inf],    "volume",      "Cylinder core radius"],
131    ["thick_rim",  "Ang",       10, [0, inf],    "volume",      "Rim shell thickness"],
132    ["thick_face", "Ang",       10, [0, inf],    "volume",      "Cylinder face thickness"],
133    ["length",         "Ang",      50, [0, inf],    "volume",      "Cylinder length"],
134    ["sld_core",       "1e-6/Ang^2", 1, [-inf, inf], "sld",         "Cylinder core scattering length density"],
135    ["sld_face",       "1e-6/Ang^2", 4, [-inf, inf], "sld",         "Cylinder face scattering length density"],
136    ["sld_rim",        "1e-6/Ang^2", 4, [-inf, inf], "sld",         "Cylinder rim scattering length density"],
137    ["sld_solvent",    "1e-6/Ang^2", 1, [-inf, inf], "sld",         "Solvent scattering length density"],
138    ["theta",          "degrees",   90, [-inf, inf], "orientation", "In plane angle"],
139    ["phi",            "degrees",    0, [-inf, inf], "orientation", "Out of plane angle"],
140    ]
141
142# pylint: enable=bad-whitespace, line-too-long
143
144source = ["lib/sas_Si.c", "lib/polevl.c", "lib/sas_J1.c", "lib/gauss76.c",
145          "core_shell_bicelle.c"]
146
147demo = dict(scale=1, background=0,
148            radius=20.0,
149            thick_rim=10.0,
150            thick_face=10.0,
151            length=400.0,
152            sld_core=1.0,
153            sld_face=4.0,
154            sld_rim=4.0,
155            sld_solvent=1.0,
156            theta=90,
157            phi=0)
158
159#qx, qy = 0.4 * cos(pi/2.0), 0.5 * sin(0)
Note: See TracBrowser for help on using the repository browser.