source: sasmodels/sasmodels/models/core_shell_bicelle.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: 5.1 KB
Line 
1r"""
2Definition
3----------
4This model provides the form factor for a circular cylinder with a
5core-shell scattering length density profile. Thus this is a variation
6of a core-shell cylinder or disc where the shell on the walls and ends
7may be of different thicknesses and scattering length densities. The form
8factor is normalized by the particle volume.
9
10.. _core-shell-bicelle-geometry:
11
12.. figure:: img/core_shell_bicelle_geometry.png
13
14    Core shell geometry (Graphic from ref [#Matusmori]_).
15    Note however that the model here calculates for rectangular, not curved, rims.
16
17The output of the 1D scattering intensity function for randomly oriented
18cylinders is then given by the equation above.
19
20The *theta* and *phi* parameters are not used for the 1D output.
21Our implementation of the scattering kernel and the 1D scattering intensity
22use the c-library from NIST.
23
24.. figure:: img/cylinder_angle_definition.jpg
25
26    Definition of the angles for the oriented core shell bicelle tmodel.
27
28.. figure:: img/cylinder_angle_projection.jpg
29    :width: 600px
30
31    Examples of the angles for oriented pp against the detector plane.
32
33References
34----------
35
36.. [#Matusmori] `N Matsumori and M Murata <http://dx.doi.org/10.1039/C0NP0000
37   2G>`_, *Nat. Prod. Rep.* 27 (2010) 1480-1492
38.. [#] L A Feigin and D I Svergun, *Structure Analysis by Small-Angle X-Ray and
39   Neutron Scattering,* Plenum Press, New York, (1987)
40
41Authorship and Verification
42----------------------------
43
44* **Author:** NIST IGOR/DANSE **Date:** pre 2010
45* **Last Modified by:** Paul Butler **Date:** Septmber 30, 2016
46* **Last Reviewed by:** Under Review **Date:** October 5, 2016
47
48"""
49
50from numpy import inf, sin, cos
51
52name = "core_shell_bicelle"
53title = "Circular cylinder with a core-shell scattering length density profile.."
54description = """
55    P(q,alpha)= scale/Vs*f(q)^(2) + bkg,  where: f(q)= 2(sld_core
56    - solvant_sld)* Vc*sin[qLcos(alpha/2)]
57    /[qLcos(alpha/2)]*J1(qRsin(alpha))
58    /[qRsin(alpha)]+2(shell_sld-sld_solvent)
59    *Vs*sin[q(L+T)cos(alpha/2)][[q(L+T)
60    *cos(alpha/2)]*J1(q(R+T)sin(alpha))
61    /q(R+T)sin(alpha)]
62
63    alpha:is the angle between the axis of
64    the cylinder and the q-vector
65    Vs: the volume of the outer shell
66    Vc: the volume of the core
67    L: the length of the core
68    shell_sld: the scattering length density
69    of the shell
70    sld_solvent: the scattering length density
71    of the solvent
72    bkg: the background
73    T: the thickness
74    R+T: is the outer radius
75    L+2T: The total length of the outershell
76    J1: the first order Bessel function
77    theta: axis_theta of the cylinder
78    phi: the axis_phi of the cylinder...
79        """
80category = "shape:cylinder"
81
82# pylint: disable=bad-whitespace, line-too-long
83#             ["name", "units", default, [lower, upper], "type", "description"],
84parameters = [
85    ["radius",         "Ang",       20, [0, inf],    "volume",      "Cylinder core radius"],
86    ["thick_rim",  "Ang",       10, [0, inf],    "volume",      "Rim shell thickness"],
87    ["thick_face", "Ang",       10, [0, inf],    "volume",      "Cylinder face thickness"],
88    ["length",         "Ang",      400, [0, inf],    "volume",      "Cylinder length"],
89    ["sld_core",       "1e-6/Ang^2", 1, [-inf, inf], "sld",         "Cylinder core scattering length density"],
90    ["sld_face",       "1e-6/Ang^2", 4, [-inf, inf], "sld",         "Cylinder face scattering length density"],
91    ["sld_rim",        "1e-6/Ang^2", 4, [-inf, inf], "sld",         "Cylinder rim scattering length density"],
92    ["sld_solvent",    "1e-6/Ang^2", 1, [-inf, inf], "sld",         "Solvent scattering length density"],
93    ["theta",          "degrees",   90, [-inf, inf], "orientation", "In plane angle"],
94    ["phi",            "degrees",    0, [-inf, inf], "orientation", "Out of plane angle"],
95    ]
96
97# pylint: enable=bad-whitespace, line-too-long
98
99source = ["lib/Si.c", "lib/polevl.c", "lib/sas_J1.c", "lib/gauss76.c",
100          "core_shell_bicelle.c"]
101
102demo = dict(scale=1, background=0,
103            radius=20.0,
104            thick_rim=10.0,
105            thick_face=10.0,
106            length=400.0,
107            sld_core=1.0,
108            sld_face=4.0,
109            sld_rim=4.0,
110            sld_solvent=1.0,
111            theta=90,
112            phi=0)
113
114qx, qy = 0.4 * cos(90), 0.5 * sin(0)
115tests = [
116    # Accuracy tests based on content in test/utest_other_models.py
117    [{'radius': 20.0,
118      'thick_rim': 10.0,
119      'thick_face': 10.0,
120      'length': 400.0,
121      'sld_core': 1.0,
122      'sld_face': 4.0,
123      'sld_rim': 4.0,
124      'sld_solvent': 1.0,
125      'background': 0.0,
126     }, 0.001, 353.550],
127
128    [{'radius': 20.0,
129      'thick_rim': 10.0,
130      'thick_face': 10.0,
131      'length': 400.0,
132      'sld_core': 1.0,
133      'sld_face': 4.0,
134      'sld_rim': 4.0,
135      'sld_solvent': 1.0,
136      'theta': 90.0,
137      'phi': 0.0,
138      'background': 0.00,
139     }, (qx, qy), 24.9167],
140
141    # Additional tests with larger range of parameters
142    [{'radius': 3.0,
143      'thick_rim': 100.0,
144      'thick_face': 100.0,
145      'length': 1200.0,
146      'sld_core': 5.0,
147      'sld_face': 41.0,
148      'sld_rim': 42.0,
149      'sld_solvent': 21.0,
150     }, 0.05, 1670.1828],
151    ]
Note: See TracBrowser for help on using the repository browser.