source: sasmodels/sasmodels/models/bcc.py @ b89f519

core_shell_microgelscostrafo411magnetic_modelrelease_v0.94release_v0.95ticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since b89f519 was 9890053, checked in by Paul Kienzle <pkienzle@…>, 9 years ago

add smoke tests for ER/VR; check that smoke test results are valid floats

  • Property mode set to 100644
File size: 5.1 KB
Line 
1#bcc paracrystal model
2#note model title and parameter table are automatically inserted
3#note - calculation requires double precision
4r"""
5Calculates the scattering from a **body-centered cubic lattice** with
6paracrystalline distortion. Thermal vibrations are considered to be negligible,
7and the size of the paracrystal is infinitely large. Paracrystalline distortion
8is assumed to be isotropic and characterized by a Gaussian distribution.
9
10The returned value is scaled to units of |cm^-1|\ |sr^-1|, absolute scale.
11
12Definition
13----------
14
15The scattering intensity $I(q)$ is calculated as
16
17.. math:
18
19    I(q) = \frac{\text{scale}}{V_P} V_\text{lattice} P(q) Z(q)
20
21
22where *scale* is the volume fraction of spheres, *Vp* is the volume of the
23primary particle, *V(lattice)* is a volume correction for the crystal
24structure, $P(q)$ is the form factor of the sphere (normalized), and $Z(q)$
25is the paracrystalline structure factor for a body-centered cubic structure.
26
27Equation (1) of the 1990 reference is used to calculate $Z(q)$, using
28equations (29)-(31) from the 1987 paper for *Z1*\ , *Z2*\ , and *Z3*\ .
29
30The lattice correction (the occupied volume of the lattice) for a
31body-centered cubic structure of particles of radius $R$ and nearest neighbor
32separation $D$ is
33
34.. math:
35
36    V_\text{lattice} = \frac{16\pi}{3} \frac{R^3}{\left(D\sqrt{2}\right)^3}
37
38
39The distortion factor (one standard deviation) of the paracrystal is included
40in the calculation of $Z(q)$
41
42.. math:
43
44    \Delta a = g D
45
46where $g$ is a fractional distortion based on the nearest neighbor distance.
47
48The body-centered cubic lattice is
49
50.. image:: img/bcc_lattice.jpg
51
52For a crystal, diffraction peaks appear at reduced q-values given by
53
54.. math:
55
56    \frac{qD}{2\pi} = \sqrt{h^2 + k^2 + l^2}
57
58where for a body-centered cubic lattice, only reflections where
59$(h + k + l) = \text{even}$ are allowed and reflections where
60$(h + k + l) = \text{odd}$ are forbidden. Thus the peak positions
61correspond to (just the first 5)
62
63.. math:
64
65    \begin{eqnarray}
66    &q/q_o&&\quad 1&& \ \sqrt{2} && \ \sqrt{3} && \ \sqrt{4} && \ \sqrt{5} \\
67    &\text{Indices}&& (110) && (200) && (211) && (220) && (310)
68    \end{eqnarray}
69
70**NB: The calculation of $Z(q)$ is a double numerical integral that must
71be carried out with a high density of points to properly capture the sharp
72peaks of the paracrystalline scattering.** So be warned that the calculation
73is SLOW. Go get some coffee. Fitting of any experimental data must be
74resolution smeared for any meaningful fit. This makes a triple integral.
75Very, very slow. Go get lunch!
76
77This example dataset is produced using 200 data points,
78*qmin* = 0.001 |Ang^-1|, *qmax* = 0.1 |Ang^-1| and the above default values.
79
80.. image:: img/bcc_1d.jpg
81
82*Figure. 1D plot in the linear scale using the default values (w/200 data point).*
83
84The 2D (Anisotropic model) is based on the reference below where $I(q)$ is
85approximated for 1d scattering. Thus the scattering pattern for 2D may not
86be accurate. Note that we are not responsible for any incorrectness of the 2D
87model computation.
88
89.. image:: img/bcc_orientation.gif
90
91.. image:: img/bcc_2d.jpg
92
93*Figure. 2D plot using the default values (w/200X200 pixels).*
94
95REFERENCE
96---------
97
98Hideki Matsuoka et. al. *Physical Review B*, 36 (1987) 1754-1765
99(Original Paper)
100
101Hideki Matsuoka et. al. *Physical Review B*, 41 (1990) 3854 -3856
102(Corrections to FCC and BCC lattice structure calculation)
103"""
104
105from numpy import pi, inf
106
107name = "bcc_paracrystal"
108title = "Body-centred cubic lattic with paracrystalline distortion"
109description = """
110    Calculates the scattering from a **body-centered cubic lattice** with paracrystalline distortion. Thermal vibrations
111    are considered to be negligible, and the size of the paracrystal is infinitely large. Paracrystalline distortion is
112    assumed to be isotropic and characterized by a Gaussian distribution.
113    """
114category="shape:paracrystal"
115
116parameters = [
117#   [ "name", "units", default, [lower, upper], "type","description" ],
118    [ "dnn", "Ang", 220, [-inf,inf],"","Nearest neighbour distance"],
119    [ "d_factor", "", 0.06,[-inf,inf],"","Paracrystal distortion factor" ],
120    [ "radius", "Ang",  40, [0, inf], "volume","Particle radius" ],
121    [ "sld", "1e-6/Ang^2", 4, [-inf,inf], "", "Particle scattering length density" ],
122    [ "solvent_sld", "1e-6/Ang^2", 1, [-inf,inf], "","Solvent scattering length density" ],
123    [ "theta", "degrees", 60, [-inf, inf], "orientation","In plane angle" ],
124    [ "phi", "degrees", 60, [-inf, inf], "orientation","Out of plane angle" ],
125    [ "psi", "degrees", 60, [-inf,inf], "orientation","Out of plane angle"]
126    ]
127
128source = [ "lib/J1.c", "lib/gauss150.c", "bcc.c" ]
129
130# parameters for demo
131demo = dict(
132    scale=1, background=0,
133    dnn=220, d_factor=0.06, sld=4, solvent_sld=1,
134    radius=40,
135    theta=60, phi=60, psi=60,
136    radius_pd=.2, radius_pd_n=0.2,
137    theta_pd=15, theta_pd_n=0,
138    phi_pd=15, phi_pd_n=0,
139    psi_pd=15, psi_pd_n=0,
140    )
141
142# For testing against the old sasview models, include the converted parameter
143# names and the target sasview model name.
144oldname='BCCrystalModel'
145oldpars=dict(sld='sldSph',
146             solvent_sld='sldSolv')
Note: See TracBrowser for help on using the repository browser.