source: sasmodels/sasmodels/models/fractal.py @ df89d77

core_shell_microgelscostrafo411magnetic_modelticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since df89d77 was df89d77, checked in by Paul Kienzle <pkienzle@…>, 3 years ago

fractal: fix inline equations; use alternate form of multiline equation that works with sascomp -html as well

  • Property mode set to 100644
File size: 4.0 KB
Line 
1r"""
2Definition
3----------
4This model calculates the scattering from fractal-like aggregates of spherical
5building blocks according the following equation:
6
7.. math::
8
9    I(q) = \phi\ V_\text{block} (\rho_\text{block}
10          - \rho_\text{solvent})^2 P(q)S(q) + \text{background}
11
12where $\phi$ is The volume fraction of the spherical "building block" particles
13of radius $R_0$, $V_{block}$ is the volume of a single building block,
14$\rho_{solvent}$ is the scattering length density of the solvent, and
15$\rho_{block}$ is the scattering length density of the building blocks, and
16P(q), S(q) are the scattering from randomly distributed spherical particles
17(the building blocks) and the interference from such building blocks organized
18in a fractal-like clusters.  P(q) and S(q) are calculated as:
19
20.. math::
21
22    P(q)&= F(qR_0)^2 \\
23    F(q)&= \frac{3 (\sin x - x \cos x)}{x^3} \\
24    V_\text{particle} &= \frac{4}{3}\ \pi R_0 \\
25    S(q) &= 1 + \frac{D_f\  \Gamma\!(D_f-1)}{[1+1/(q \xi)^2\  ]^{(D_f -1)/2}}
26    \frac{\sin[(D_f-1) \tan^{-1}(q \xi) ]}{(q R_0)^{D_f}}
27
28where $\xi$ is the correlation length representing the cluster size and $D_f$
29is the fractal dimension, representing the self similarity of the structure.
30Note that S(q) here goes negative if $D_f$ is too large, and the Gamma function
31diverges at $D_f=0$ and $D_f=1$.
32
33**Polydispersity on the radius is provided for.**
34
35For 2D data: The 2D scattering intensity is calculated in the same way as
361D, where the *q* vector is defined as
37
38.. math::
39
40    q = \sqrt{q_x^2 + q_y^2}
41
42
43References
44----------
45
46.. [#] J Teixeira, *J. Appl. Cryst.*, 21 (1988) 781-785
47
48Authorship and Verification
49----------------------------
50
51* **Author:** NIST IGOR/DANSE **Date:** pre 2010
52* **Converted to sasmodels by:** Paul Butler **Date:** March 19, 2016
53* **Last Modified by:** Paul Butler **Date:** March 12, 2017
54* **Last Reviewed by:** Paul Butler **Date:** March 12, 2017
55
56"""
57
58from numpy import inf
59
60name = "fractal"
61title = "Calculates the scattering from fractal-like aggregates of spheres \
62following theTexiera reference."
63description = """
64        The scattering intensity is given by
65        I(q) = scale * V * delta^(2) * P(q) * S(q) + background, where
66        p(q)= F(q*radius)^(2)
67        F(x) = 3*[sin(x)-x cos(x)]/x**3
68        delta = sld_block -sld_solv
69        scale        =  scale * volfraction
70        radius       =  Block radius
71        sld_block    =  SDL block
72        sld_solv  =  SDL solvent
73        background   =  background
74        and S(q) is the interference term between building blocks given
75        in the full documentation and depending on the parameters
76        fractal_dim  =  Fractal dimension
77        cor_length  =  Correlation Length    """
78
79category = "shape-independent"
80
81# pylint: disable=bad-whitespace, line-too-long
82#             ["name", "units", default, [lower, upper], "type","description"],
83parameters = [["volfraction", "", 0.05, [0.0, 1], "",
84               "volume fraction of blocks"],
85              ["radius",    "Ang",  5.0, [0.0, inf], "volume",
86               "radius of particles"],
87              ["fractal_dim",      "",  2.0, [0.0, 6.0], "",
88               "fractal dimension"],
89              ["cor_length", "Ang", 100.0, [0.0, inf], "",
90               "cluster correlation length"],
91              ["sld_block", "1e-6/Ang^2", 2.0, [-inf, inf], "sld",
92               "scattering length density of particles"],
93              ["sld_solvent", "1e-6/Ang^2", 6.4, [-inf, inf], "sld",
94               "scattering length density of solvent"],
95             ]
96# pylint: enable=bad-whitespace, line-too-long
97
98source = ["lib/sas_3j1x_x.c", "lib/sas_gamma.c", "lib/fractal_sq.c", "fractal.c"]
99
100demo = dict(volfraction=0.05,
101            radius=5.0,
102            fractal_dim=2.0,
103            cor_length=100.0,
104            sld_block=2.0,
105            sld_solvent=6.4)
106
107# NOTE: test results taken from values returned by SasView 3.1.2
108tests = [
109    [{}, 0.0005, 40.4980069872],
110    [{}, 0.234734468938, 0.0947143166058],
111    [{}, 0.5, 0.0176878183458],
112    ]
Note: See TracBrowser for help on using the repository browser.