# source:sasmodels/sasmodels/models/fuzzy_sphere.py@0507e09

core_shell_microgelsmagnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since 0507e09 was 0507e09, checked in by smk78, 9 months ago

• Property mode set to 100644
File size: 4.2 KB
Line
1r"""
2For information about polarised and magnetic scattering, see
3the :ref:magnetism documentation.
4
5Definition
6----------
7
8The scattering intensity $I(q)$ is calculated as:
9
10.. math::
11
12    I(q) = \frac{\text{scale}}{V}(\Delta \rho)^2 A^2(q) S(q)
13           + \text{background}
14
15
16where the amplitude $A(q)$ is given as the typical sphere scattering convoluted
17with a Gaussian to get a gradual drop-off in the scattering length density:
18
19.. math::
20
21    A(q) = \frac{3\left[\sin(qR) - qR \cos(qR)\right]}{(qR)^3}
22           \exp\left(\frac{-(\sigma_\text{fuzzy}q)^2}{2}\right)
23
24Here $A(q)^2$ is the form factor, $P(q)$. The scale is equivalent to the
25volume fraction of spheres, each of volume, $V$. Contrast $(\Delta \rho)$
26is the difference of scattering length densities of the sphere and the
27surrounding solvent.
28
29Poly-dispersion in radius and in fuzziness is provided for, though the
30fuzziness must be kept much smaller than the sphere radius for meaningful
31results.
32
33From the reference:
34
35  The "fuzziness" of the interface is defined by the parameter
36  $\sigma_\text{fuzzy}$. The particle radius $R$ represents the radius of the
37  particle where the scattering length density profile decreased to 1/2 of the
38  core density. $\sigma_\text{fuzzy}$ is the width of the smeared particle
39  surface; i.e., the standard deviation from the average height of the fuzzy
40  interface. The inner regions of the microgel that display a higher density
41  are described by the radial box profile extending to a radius of
42  approximately $R_\text{box} \sim R - 2 \sigma$. The profile approaches
43  zero as $R_\text{sans} \sim R + 2\sigma$.
44
45For 2D data: The 2D scattering intensity is calculated in the same way as 1D,
46where the $q$ vector is defined as
47
48.. math:: q = \sqrt{{q_x}^2 + {q_y}^2}
49
50References
51----------
52
53.. [#] M Stieger, J. S Pedersen, P Lindner, W Richtering, *Langmuir*, 20 (2004) 7283-7292
54
55Source
56------
57
58fuzzy_sphere.py <https://github.com/SasView/sasmodels/blob/master/sasmodels/models/fuzzy_sphere.py>_
59
60fuzzy_sphere.c <https://github.com/SasView/sasmodels/blob/master/sasmodels/models/fuzzy_sphere.c>_
61
62Authorship and Verification
63----------------------------
64
65* **Author:**
67* **Last Reviewed by:**
68* **Source added by :** Steve King **Date:** March 25, 2019
69"""
70
71import numpy as np
72from numpy import inf
73
74name = "fuzzy_sphere"
75title = "Scattering from spherical particles with a fuzzy surface."
76description = """\
77scale: scale factor times volume fraction,
78or just volume fraction for absolute scale data
80fuzziness = the standard deviation of the fuzzy interfacial
81thickness (ie., so-called interfacial roughness)
82sld: the SLD of the sphere
83solvend_sld: the SLD of the solvent
84background: incoherent background
85Note: By definition, this function works only when fuzziness << radius.
86"""
87category = "shape:sphere"
88
90# ["name", "units", default, [lower, upper], "type","description"],
91parameters = [["sld",         "1e-6/Ang^2",  1, [-inf, inf], "sld",    "Particle scattering length density"],
92              ["sld_solvent", "1e-6/Ang^2",  3, [-inf, inf], "sld",    "Solvent scattering length density"],
94              ["fuzziness",   "Ang",        10, [0, inf],    "volume",       "std deviation of Gaussian convolution for interface (must be << radius)"],
95             ]
97
98source = ["lib/sas_3j1x_x.c", "fuzzy_sphere.c"]
99have_Fq = True
101
102def random():
103    """Return a random parameter set for the model."""
105    fuzziness = 10**np.random.uniform(-2, -0.5)*radius  # 1% to 31% fuzziness
106    pars = dict(
108        fuzziness=fuzziness,
109    )
110    return pars
111
112demo = dict(scale=1, background=0.001,
113            sld=1, sld_solvent=3,