source: sasmodels/sasmodels/models/sc_paracrystal.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, 5 years ago

Added link to source code to each model. Closes #883

  • Property mode set to 100644
File size: 6.9 KB
RevLine 
[1f65db5]1r"""
[b297ba9]2.. warning:: This model and this model description are under review following
3             concerns raised by SasView users. If you need to use this model,
4             please email help@sasview.org for the latest situation. *The
[da7b26b]5             SasView Developers. September 2018.*
[b297ba9]6
[da7b26b]7Definition
8----------
9
[1f65db5]10Calculates the scattering from a **simple cubic lattice** with
11paracrystalline distortion. Thermal vibrations are considered to be
12negligible, and the size of the paracrystal is infinitely large.
13Paracrystalline distortion is assumed to be isotropic and characterized
14by a Gaussian distribution.
15
16The scattering intensity $I(q)$ is calculated as
17
18.. math::
19
20    I(q) = \text{scale}\frac{V_\text{lattice}P(q)Z(q)}{V_p} + \text{background}
21
22where scale is the volume fraction of spheres, $V_p$ is the volume of
23the primary particle, $V_\text{lattice}$ is a volume correction for the crystal
24structure, $P(q)$ is the form factor of the sphere (normalized), and
25$Z(q)$ is the paracrystalline structure factor for a simple cubic structure.
26
[da7b26b]27Equation (16) of the 1987 reference\ [#CIT1987]_ is used to calculate $Z(q)$,
[0507e09]28using equations (13)-(15) from the 1987 paper\ [#CIT1990]_ for $Z1$, $Z2$, and
[da7b26b]29$Z3$.
[1f65db5]30
[2d81cfe]31The lattice correction (the occupied volume of the lattice) for a simple cubic
32structure of particles of radius *R* and nearest neighbor separation *D* is
[1f65db5]33
34.. math::
35
36    V_\text{lattice}=\frac{4\pi}{3}\frac{R^3}{D^3}
37
38The distortion factor (one standard deviation) of the paracrystal is included
39in the calculation of $Z(q)$
40
41.. math::
42
43    \Delta a = gD
44
45where *g* is a fractional distortion based on the nearest neighbor distance.
46
47The simple cubic lattice is
48
49.. figure:: img/sc_crystal_geometry.jpg
50
51For a crystal, diffraction peaks appear at reduced q-values given by
52
53.. math::
54
55    \frac{qD}{2\pi} = \sqrt{h^2+k^2+l^2}
56
57where for a simple cubic lattice any h, k, l are allowed and none are
58forbidden. Thus the peak positions correspond to (just the first 5)
59
60.. math::
61    :nowrap:
62
63    \begin{align*}
64    q/q_0 \quad & \quad 1
65                & \sqrt{2} \quad
66                & \quad  \sqrt{3} \quad
67                & \sqrt{4} \quad
68                & \quad \sqrt{5}\quad \\
69    Indices \quad & (100)
70                  & \quad (110) \quad
71                  & \quad (111)
72                  & (200) \quad
73                  & \quad (210)
74    \end{align*}
75
76.. note::
77
78    The calculation of *Z(q)* is a double numerical integral that must be
79    carried out with a high density of points to properly capture the sharp
80    peaks of the paracrystalline scattering.
[2d81cfe]81    So be warned that the calculation is slow. Fitting of any experimental data
82    must be resolution smeared for any meaningful fit. This makes a triple
83    integral which may be very slow.
[1f65db5]84
85The 2D (Anisotropic model) is based on the reference below where *I(q)* is
86approximated for 1d scattering. Thus the scattering pattern for 2D may not
[2d81cfe]87be accurate particularly at low $q$. For general details of the calculation
[eda8b30]88and angular dispersions for oriented particles see :ref:`orientation` .
89Note that we are not responsible for any incorrectness of the
902D model computation.
[1f65db5]91
92.. figure:: img/parallelepiped_angle_definition.png
93
[0881f4e]94    Orientation of the crystal with respect to the scattering plane, when
[1f65db5]95    $\theta = \phi = 0$ the $c$ axis is along the beam direction (the $z$ axis).
96
97Reference
98---------
99
[0507e09]100.. [#CIT1987] Hideki Matsuoka et. al. *Physical Review B*, 36 (1987) 1754-1765 (Original Paper)
101.. [#CIT1990] Hideki Matsuoka et. al. *Physical Review B*, 41 (1990) 3854 -3856 (Corrections to FCC and BCC lattice structure calculation)
102
103Source
104------
105
106`sc_paracrystal.py <https://github.com/SasView/sasmodels/blob/master/sasmodels/models/sc_paracrystal.py>`_
107
108`sc_paracrystal.c <https://github.com/SasView/sasmodels/blob/master/sasmodels/models/sc_paracrystal.c>`_
[da7b26b]109
110Authorship and Verification
111---------------------------
112
113* **Author:** NIST IGOR/DANSE **Date:** pre 2010
[0507e09]114* **Last Modified by:** Steve King **Date:** March 25, 2019
[da7b26b]115* **Last Reviewed by:** Richard Heenan **Date:** March 21, 2016
[0507e09]116* **Source added by :** Steve King **Date:** March 25, 2019
[1f65db5]117"""
118
[2d81cfe]119import numpy as np
[1f65db5]120from numpy import inf
121
122name = "sc_paracrystal"
123title = "Simple cubic lattice with paracrystalline distortion"
124description = """
125        P(q)=(scale/Vp)*V_lattice*P(q)*Z(q)+bkg where scale is the volume
126        fraction of sphere,
127        Vp = volume of the primary particle,
128        V_lattice = volume correction for
129        for the crystal structure,
130        P(q)= form factor of the sphere (normalized),
131        Z(q)= paracrystalline structure factor
132        for a simple cubic structure.
133        [Simple Cubic ParaCrystal Model]
134        Parameters;
135        scale: volume fraction of spheres
136        bkg:background, R: radius of sphere
137        dnn: Nearest neighbor distance
138        d_factor: Paracrystal distortion factor
139        radius: radius of the spheres
140        sldSph: SLD of the sphere
141        sldSolv: SLD of the solvent
142        """
143category = "shape:paracrystal"
144single = False
145# pylint: disable=bad-whitespace, line-too-long
146#             ["name", "units", default, [lower, upper], "type","description"],
147parameters = [["dnn",         "Ang",       220.0, [0.0, inf],  "",            "Nearest neighbor distance"],
148              ["d_factor",    "",           0.06, [-inf, inf], "",            "Paracrystal distortion factor"],
149              ["radius",      "Ang",        40.0, [0.0, inf],  "volume",      "Radius of sphere"],
150              ["sld",  "1e-6/Ang^2",         3.0, [0.0, inf],  "sld",         "Sphere scattering length density"],
151              ["sld_solvent", "1e-6/Ang^2",  6.3, [0.0, inf],  "sld",         "Solvent scattering length density"],
[9b79f29]152              ["theta",       "degrees",    0,    [-360, 360], "orientation", "c axis to beam angle"],
153              ["phi",         "degrees",    0,    [-360, 360], "orientation", "rotation about beam"],
154              ["psi",         "degrees",    0,    [-360, 360], "orientation", "rotation about c axis"]
[1f65db5]155             ]
156# pylint: enable=bad-whitespace, line-too-long
157
158source = ["lib/sas_3j1x_x.c", "lib/sphere_form.c", "lib/gauss150.c", "sc_paracrystal.c"]
159
[404ebbd]160def random():
[b297ba9]161    """Return a random parameter set for the model."""
[1511c37c]162    # copied from bcc_paracrystal
163    radius = 10**np.random.uniform(1.3, 4)
164    d_factor = 10**np.random.uniform(-2, -0.7)  # sigma_d in 0.01-0.7
[404ebbd]165    dnn_fraction = np.random.beta(a=10, b=1)
[8f04da4]166    dnn = radius*4/np.sqrt(4)/dnn_fraction
[404ebbd]167    pars = dict(
168        #sld=1, sld_solvent=0, scale=1, background=1e-32,
[1511c37c]169        dnn=dnn,
170        d_factor=d_factor,
171        radius=radius,
[404ebbd]172    )
173    return pars
[1f65db5]174
175tests = [
[69e1afc]176    # Accuracy tests based on content in test/utest_extra_models.py, 2d tests added April 10, 2017
[1f65db5]177    [{}, 0.001, 10.3048],
178    [{}, 0.215268, 0.00814889],
[2a0b2b1]179    [{}, 0.414467, 0.001313289],
[1511c37c]180    [{'theta': 10.0, 'phi': 20, 'psi': 30.0}, (0.045, -0.035), 18.0397138402],
181    [{'theta': 10.0, 'phi': 20, 'psi': 30.0}, (0.023, 0.045), 0.0177333171285],
[1f65db5]182    ]
Note: See TracBrowser for help on using the repository browser.