source: sasmodels/sasmodels/models/flexible_cylinder.py @ 7d4b2ae

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

Code review from PAK

  • Property mode set to 100644
File size: 4.4 KB
RevLine 
[f94d8a2]1r"""
[168052c]2This model provides the form factor, $P(q)$, for a flexible cylinder
3where the form factor is normalized by the volume of the cylinder.
[f94d8a2]4**Inter-cylinder interactions are NOT provided for.**
5
6.. math::
7
8    P(q) = \text{scale} \left<F^2\right>/V + \text{background}
9
[168052c]10where the averaging $\left<\ldots\right>$ is applied only for the 1D
11calculation
[f94d8a2]12
[168052c]13The 2D scattering intensity is the same as 1D, regardless of the orientation of
14the q vector which is defined as
[f94d8a2]15
16.. math::
17
18    q = \sqrt{q_x^2 + q_y^2}
19
20Definitions
21-----------
22
23.. figure:: img/flexible_cylinder_geometry.jpg
24
25
[168052c]26The chain of contour length, $L$, (the total length) can be described as a
27chain of some number of locally stiff segments of length $l_p$, the persistence
28length (the length along the cylinder over which the flexible cylinder can be
29considered a rigid rod).
[f94d8a2]30The Kuhn length $(b = 2*l_p)$ is also used to describe the stiffness of a chain.
31
32The returned value is in units of $cm^-1$, on absolute scale.
33
[168052c]34In the parameters, the sldCyl and sldSolv represent the SLD of the chain/cylinder
35and solvent respectively.
[f94d8a2]36
37
38.. figure:: img/flexible_cylinder_1d.jpg
39
40    1D plot using the default values (w/1000 data point).
41
42
[168052c]43Our model uses the form factor calculations implemented in a c-library provided
44by the NIST Center for Neutron Research (Kline, 2006).
[f94d8a2]45
46
47From the reference:
48
49    'Method 3 With Excluded Volume' is used.
50    The model is a parametrization of simulations of a discrete representation
[168052c]51    of the worm-like chain model of Kratky and Porod applied in the
52    pseudocontinuous limit.
[f94d8a2]53    See equations (13,26-27) in the original reference for the details.
54
55References
56----------
57
[168052c]58J S Pedersen and P Schurtenberger. *Scattering functions of semiflexible
59polymers with and without excluded volume effects.* Macromolecules,
6029 (1996) 7602-7612
[f94d8a2]61
62Correction of the formula can be found in
63
[168052c]64W R Chen, P D Butler and L J Magid, *Incorporating Intermicellar Interactions
65in the Fitting of SANS Data from Cationic Wormlike Micelles.* Langmuir,
6622(15) 2006 6539-6548
[f94d8a2]67"""
68from numpy import inf
69
70name = "flexible_cylinder"
[168052c]71title = "Flexible cylinder where the form factor is normalized by the volume" \
72        "of the cylinder."
73description = """Note : scale and contrast=sld-solvent_sld are both
74                multiplicative factors in the model and are perfectly
75                correlated. One or both of these parameters must be held fixed
[f94d8a2]76                during model fitting.
77              """
78
79category = "shape:cylinder"
[13ed84c]80single = False
[f94d8a2]81
[168052c]82# pylint: disable=bad-whitespace, line-too-long
[f94d8a2]83#             ["name", "units", default, [lower, upper], "type", "description"],
84parameters = [
[168052c]85    ["length",      "Ang",       1000.0, [0, inf],    "volume", "Length of the flexible cylinder"],
86    ["kuhn_length", "Ang",        100.0, [0, inf],    "volume", "Kuhn length of the flexible cylinder"],
87    ["radius",      "Ang",         20.0, [0, inf],    "volume", "Radius of the flexible cylinder"],
88    ["sld",         "1e-6/Ang^2",   1.0, [-inf, inf], "",       "Cylinder scattering length density"],
89    ["solvent_sld", "1e-6/Ang^2",   6.3, [-inf, inf], "",       "Solvent scattering length density"],
90    ]
91# pylint: enable=bad-whitespace, line-too-long
[e7678b2]92source = ["lib/J1.c", "lib/J1c.c", "lib/wrc_cyl.c", "flexible_cylinder.c"]
[f94d8a2]93
94demo = dict(scale=1.0, background=0.0001,
95            length=1000.0,
96            kuhn_length=100.0,
97            radius=20.0,
98            sld=1.0,
99            solvent_sld=6.3)
100
101oldname = 'FlexibleCylinderModel'
102oldpars = dict(sld='sldCyl', solvent_sld='sldSolv')
103
104
105tests = [
[168052c]106    # Accuracy tests based on content in test/utest_other_models.py
107    # Currently fails in OCL
108    # [{'length':     1000.0,
109    #  'kuhn_length': 100.0,
110    #  'radius':       20.0,
111    #  'sld':           1.0,
112    #  'solvent_sld':   6.3,
113    #  'background':    0.0001,
114    #  }, 0.001, 3509.2187],
115
116    # Additional tests with larger range of parameters
117    [{'length':    1000.0,
118      'kuhn_length': 100.0,
119      'radius':       20.0,
120      'sld':           1.0,
121      'solvent_sld':   6.3,
122      'background':    0.0001,
123     }, 1.0, 0.000595345],
124    [{'length':        10.0,
125      'kuhn_length': 800.0,
126      'radius':        2.0,
127      'sld':           6.0,
128      'solvent_sld':  12.3,
129      'background':    0.001,
130     }, 0.1, 1.55228],
131    [{'length':        100.0,
132      'kuhn_length': 800.0,
133      'radius':       50.0,
134      'sld':           0.1,
135      'solvent_sld':   5.1,
136      'background':    0.0,
137     }, 1.0, 0.000938456]
138    ]
[f94d8a2]139
Note: See TracBrowser for help on using the repository browser.