source: sasmodels/sasmodels/models/porod.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: 1.8 KB
RevLine 
[19b6d28]1r"""
2This model fits the Porod function
3
[40a87fa]4.. math:: I(q) = C/q^4
[19b6d28]5
6to the data directly without any need for linearisation (cf. Log I(q) vs Log q).
7
[40a87fa]8Here $C = 2\pi (\Delta\rho)^2 S_v$ is the scale factor where $S_v$ is
9the specific surface area (ie, surface area / volume) of the sample, and
10$\Delta\rho$ is the contrast factor.
[19b6d28]11
[cc3fac6]12For 2D data: The 2D scattering intensity is calculated in the same way as 1D,
[16bb433]13where the q vector is defined as
[19b6d28]14
[40a87fa]15.. math:: q = \sqrt{q_x^2+q_y^2}
[19b6d28]16
[2f63032]17References
18----------
19
[0507e09]20.. [#] G Porod. *Kolloid Zeit*. 124 (1951) 83
21.. [#] L A Feigin, D I Svergun, G W Taylor. *Structure Analysis by Small-Angle X-ray and Neutron Scattering*. Springer. (1987)
[40a87fa]22
[0507e09]23Source
24------
25
26`porod.py <https://github.com/SasView/sasmodels/blob/master/sasmodels/models/porod.py>`_
27
28Authorship and Verification
29----------------------------
30
31* **Author:**
32* **Last Modified by:**
33* **Last Reviewed by:**
34* **Source added by :** Steve King **Date:** March 25, 2019
[19b6d28]35"""
36
[2d81cfe]37import numpy as np
38from numpy import inf, errstate
[19b6d28]39
40name = "porod"
41title = "Porod function"
42description = """\
43          I(q) = scale/q^4 + background
44"""
45
46category = "shape-independent"
47
48parameters = []
49
50def Iq(q):
51    """
52    @param q: Input q-value
53    """
[82923a6]54    with errstate(divide='ignore'):
[4962519]55        return q**-4
[19b6d28]56
57Iq.vectorized = True  # Iq accepts an array of q values
58
[232bb12]59def random():
[b297ba9]60    """Return a random parameter set for the model."""
[232bb12]61    sld, solvent = np.random.uniform(-0.5, 12, size=2)
62    radius = 10**np.random.uniform(1, 4.7)
63    Vf = 10**np.random.uniform(-3, -1)
64    scale = 1e-4 * Vf * 2*np.pi*(sld-solvent)**2/(3*radius)
65    pars = dict(
66        scale=scale,
67    )
68    return pars
69
[19b6d28]70demo = dict(scale=1.5, background=0.5)
71
[82923a6]72tests = [
73    [{'scale': 0.00001, 'background':0.01}, 0.04, 3.916250],
74    [{}, 0.0, inf],
75]
Note: See TracBrowser for help on using the repository browser.