source: sasmodels/sasmodels/models/sc_paracrystal.py @ bd91e8f

ticket_1156
Last change on this file since bd91e8f was bd91e8f, checked in by Paul Kienzle <pkienzle@…>, 5 years ago

Merge branch 'master' into ticket_1156

  • Property mode set to 100644
File size: 6.9 KB
RevLine 
[1f65db5]1r"""
[b3f4831]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.*
[b3f4831]6
[e7e9231]7Definition
8----------
9
[0b906ea]10Calculates the scattering from a **simple cubic lattice** with
[1f65db5]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
[e7e9231]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>`_
[e7e9231]109
110Authorship and Verification
111----------------------------
112
113* **Author:** NIST IGOR/DANSE **Date:** pre 2010
114* **Last Modified by:** Paul Butler **Date:** September 16, 2018
115* **Last Reviewed by:** Paul Butler **Date:** September 16, 2018
[1f65db5]116"""
117
[2d81cfe]118import numpy as np
[1f65db5]119from numpy import inf
120
121name = "sc_paracrystal"
122title = "Simple cubic lattice with paracrystalline distortion"
123description = """
124        P(q)=(scale/Vp)*V_lattice*P(q)*Z(q)+bkg where scale is the volume
125        fraction of sphere,
126        Vp = volume of the primary particle,
127        V_lattice = volume correction for
128        for the crystal structure,
129        P(q)= form factor of the sphere (normalized),
130        Z(q)= paracrystalline structure factor
131        for a simple cubic structure.
132        [Simple Cubic ParaCrystal Model]
133        Parameters;
134        scale: volume fraction of spheres
135        bkg:background, R: radius of sphere
[6530963]136        lattice_spacing: Nearest neighbor distance
137        lattice_distortion: Paracrystal distortion factor
[1f65db5]138        radius: radius of the spheres
139        sldSph: SLD of the sphere
140        sldSolv: SLD of the solvent
141        """
142category = "shape:paracrystal"
143single = False
144# pylint: disable=bad-whitespace, line-too-long
145#             ["name", "units", default, [lower, upper], "type","description"],
[6530963]146parameters = [["lattice_spacing",         "Ang",       220.0, [0.0, inf],  "",  "Lattice spacing"],
147              ["lattice_distortion",    "",           0.06, [-inf, inf], "",   "Paracrystal distortion factor"],
[1f65db5]148              ["radius",      "Ang",        40.0, [0.0, inf],  "volume",      "Radius of sphere"],
149              ["sld",  "1e-6/Ang^2",         3.0, [0.0, inf],  "sld",         "Sphere scattering length density"],
150              ["sld_solvent", "1e-6/Ang^2",  6.3, [0.0, inf],  "sld",         "Solvent scattering length density"],
[9b79f29]151              ["theta",       "degrees",    0,    [-360, 360], "orientation", "c axis to beam angle"],
152              ["phi",         "degrees",    0,    [-360, 360], "orientation", "rotation about beam"],
153              ["psi",         "degrees",    0,    [-360, 360], "orientation", "rotation about c axis"]
[1f65db5]154             ]
155# pylint: enable=bad-whitespace, line-too-long
156
157source = ["lib/sas_3j1x_x.c", "lib/sphere_form.c", "lib/gauss150.c", "sc_paracrystal.c"]
158
[404ebbd]159def random():
[b297ba9]160    """Return a random parameter set for the model."""
[1511c37c]161    # copied from bcc_paracrystal
162    radius = 10**np.random.uniform(1.3, 4)
[6530963]163    lattice_distortion = 10**np.random.uniform(-2, -0.7)  # sigma_d in 0.01-0.7
164    lattice_spacing_fraction = np.random.beta(a=10, b=1)
165    lattice_spacing = radius*4/np.sqrt(4)/lattice_spacing_fraction
[404ebbd]166    pars = dict(
167        #sld=1, sld_solvent=0, scale=1, background=1e-32,
[6530963]168        lattice_spacing=lattice_spacing,
169        lattice_distortion=lattice_distortion,
[1511c37c]170        radius=radius,
[404ebbd]171    )
172    return pars
[1f65db5]173
174tests = [
[69e1afc]175    # Accuracy tests based on content in test/utest_extra_models.py, 2d tests added April 10, 2017
[1f65db5]176    [{}, 0.001, 10.3048],
177    [{}, 0.215268, 0.00814889],
[2a0b2b1]178    [{}, 0.414467, 0.001313289],
[1511c37c]179    [{'theta': 10.0, 'phi': 20, 'psi': 30.0}, (0.045, -0.035), 18.0397138402],
180    [{'theta': 10.0, 'phi': 20, 'psi': 30.0}, (0.023, 0.045), 0.0177333171285],
[1f65db5]181    ]
Note: See TracBrowser for help on using the repository browser.