source: sasmodels/sasmodels/models/sc_paracrystal.py @ 737679d

core_shell_microgelscostrafo411magnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since 737679d was 737679d, checked in by richardh, 7 years ago

docs edits for bcc_ fc_ sc_paracrystal

  • Property mode set to 100644
File size: 5.7 KB
Line 
1r"""
2Calculates the scattering from a **simple cubic lattice** with
3paracrystalline distortion. Thermal vibrations are considered to be
4negligible, and the size of the paracrystal is infinitely large.
5Paracrystalline distortion is assumed to be isotropic and characterized
6by a Gaussian distribution.
7
8Definition
9----------
10
11The scattering intensity $I(q)$ is calculated as
12
13.. math::
14
15    I(q) = \text{scale}\frac{V_\text{lattice}P(q)Z(q)}{V_p} + \text{background}
16
17where scale is the volume fraction of spheres, $V_p$ is the volume of
18the primary particle, $V_\text{lattice}$ is a volume correction for the crystal
19structure, $P(q)$ is the form factor of the sphere (normalized), and
20$Z(q)$ is the paracrystalline structure factor for a simple cubic structure.
21
22Equation (16) of the 1987 reference is used to calculate $Z(q)$, using
23equations (13)-(15) from the 1987 paper for Z1, Z2, and Z3.
24
25The lattice correction (the occupied volume of the lattice) for a simple
26cubic structure of particles of radius *R* and nearest neighbor separation *D* is
27
28.. math::
29
30    V_\text{lattice}=\frac{4\pi}{3}\frac{R^3}{D^3}
31
32The distortion factor (one standard deviation) of the paracrystal is included
33in the calculation of $Z(q)$
34
35.. math::
36
37    \Delta a = gD
38
39where *g* is a fractional distortion based on the nearest neighbor distance.
40
41The simple cubic lattice is
42
43.. figure:: img/sc_crystal_geometry.jpg
44
45For a crystal, diffraction peaks appear at reduced q-values given by
46
47.. math::
48
49    \frac{qD}{2\pi} = \sqrt{h^2+k^2+l^2}
50
51where for a simple cubic lattice any h, k, l are allowed and none are
52forbidden. Thus the peak positions correspond to (just the first 5)
53
54.. math::
55    :nowrap:
56
57    \begin{align*}
58    q/q_0 \quad & \quad 1
59                & \sqrt{2} \quad
60                & \quad  \sqrt{3} \quad
61                & \sqrt{4} \quad
62                & \quad \sqrt{5}\quad \\
63    Indices \quad & (100)
64                  & \quad (110) \quad
65                  & \quad (111)
66                  & (200) \quad
67                  & \quad (210)
68    \end{align*}
69
70.. note::
71
72    The calculation of *Z(q)* is a double numerical integral that must be
73    carried out with a high density of points to properly capture the sharp
74    peaks of the paracrystalline scattering.
75    So be warned that the calculation is SLOW. Go get some coffee.
76    Fitting of any experimental data must be resolution smeared for any
77    meaningful fit. This makes a triple integral. Very, very slow.
78    Go get lunch!
79
80The 2D (Anisotropic model) is based on the reference below where *I(q)* is
81approximated for 1d scattering. Thus the scattering pattern for 2D may not
82be accurate. Note that we are not responsible for any incorrectness of the 2D
83model computation.
84
85<<<<<<< HEAD
86.. figure:: img/parallelepiped_angle_definition.png
87
88    Orientation of the crystal with respect to the scattering plane, when
89    $\theta = \phi = 0$ the $c$ axis is along the beam direction (the $z$ axis).
90=======
91.. figure:: img/sc_crystal_angle_definition.jpg
92>>>>>>> 3fd04991e2575b02401723d8534c376cd9b66305
93
94Reference
95---------
96Hideki Matsuoka et. al. *Physical Review B,* 36 (1987) 1754-1765
97(Original Paper)
98
99Hideki Matsuoka et. al. *Physical Review B,* 41 (1990) 3854 -3856
100(Corrections to FCC and BCC lattice structure calculation)
101
102"""
103
104from numpy import inf
105
106name = "sc_paracrystal"
107title = "Simple cubic lattice with paracrystalline distortion"
108description = """
109        P(q)=(scale/Vp)*V_lattice*P(q)*Z(q)+bkg where scale is the volume
110        fraction of sphere,
111        Vp = volume of the primary particle,
112        V_lattice = volume correction for
113        for the crystal structure,
114        P(q)= form factor of the sphere (normalized),
115        Z(q)= paracrystalline structure factor
116        for a simple cubic structure.
117        [Simple Cubic ParaCrystal Model]
118        Parameters;
119        scale: volume fraction of spheres
120        bkg:background, R: radius of sphere
121        dnn: Nearest neighbor distance
122        d_factor: Paracrystal distortion factor
123        radius: radius of the spheres
124        sldSph: SLD of the sphere
125        sldSolv: SLD of the solvent
126        """
127category = "shape:paracrystal"
128single = False
129# pylint: disable=bad-whitespace, line-too-long
130#             ["name", "units", default, [lower, upper], "type","description"],
131parameters = [["dnn",         "Ang",       220.0, [0.0, inf],  "",            "Nearest neighbor distance"],
132              ["d_factor",    "",           0.06, [-inf, inf], "",            "Paracrystal distortion factor"],
133              ["radius",      "Ang",        40.0, [0.0, inf],  "volume",      "Radius of sphere"],
134              ["sld",  "1e-6/Ang^2",         3.0, [0.0, inf],  "sld",         "Sphere scattering length density"],
135              ["sld_solvent", "1e-6/Ang^2",  6.3, [0.0, inf],  "sld",         "Solvent scattering length density"],
136              ["theta",       "degrees",     0.0, [-inf, inf], "orientation", "Orientation of the a1 axis w/respect incoming beam"],
137              ["phi",         "degrees",     0.0, [-inf, inf], "orientation", "Orientation of the a2 in the plane of the detector"],
138              ["psi",         "degrees",     0.0, [-inf, inf], "orientation", "Orientation of the a3 in the plane of the detector"],
139             ]
140# pylint: enable=bad-whitespace, line-too-long
141
142source = ["lib/sas_3j1x_x.c", "lib/sphere_form.c", "lib/gauss150.c", "sc_paracrystal.c"]
143
144demo = dict(scale=1, background=0,
145            dnn=220.0,
146            d_factor=0.06,
147            radius=40.0,
148            sld=3.0,
149            sld_solvent=6.3,
150            theta=0.0,
151            phi=0.0,
152            psi=0.0)
153
154tests = [
155    # Accuracy tests based on content in test/utest_extra_models.py
156    [{}, 0.001, 10.3048],
157    [{}, 0.215268, 0.00814889],
158    [{}, (0.414467), 0.001313289]
159    ]
160
161
Note: See TracBrowser for help on using the repository browser.