source: sasmodels/sasmodels/models/power_law.py @ 8fe0b9b

core_shell_microgelscostrafo411magnetic_modelrelease_v0.94release_v0.95ticket-1257-vesicle-productticket_1156ticket_1265_superballticket_822_more_unit_tests
Last change on this file since 8fe0b9b was 8fe0b9b, checked in by smk78, 8 years ago

Added tests

  • Property mode set to 100644
File size: 1.7 KB
Line 
1#power_law model
2#conversion of PowerLawAbsModel.py
3
4r"""
5This model calculates a simple power law with a flat background.
6
7Definition
8----------
9
10.. math::
11
12    I(q) = \text{scale} \cdot q^{-m} + \text{background}
13
14Note the minus sign in front of the exponent. The exponent *m*
15should therefore be entered as a **positive** number.
16
17Also note that unlike many other models, *scale* in this model
18is NOT explicitly related to a volume fraction. Be careful if
19combining this model with other models.
20
21.. image:: img/power_law_1d.jpg
22
23*Figure. 1D plot using the default values (w/200 data point).*
24
25REFERENCE
26
27None.
28"""
29
30from numpy import inf, sqrt
31
32name =  "power_law"
33title = "Simple power law with a flat background"
34
35description = """\
36        Evaluates the function
37        I(q) = scale * q^(-m) + bkgd
38        NB: enter m as a positive number!
39        """
40category = "shape-independent"
41
42#             ["name", "units", default, [lower, upper], "type", "description"],
43parameters = [["scale", "", 1.0, [-inf, inf], "", "Power law scale factor"],
44              ["m", "", 4.0, [-inf, inf], "", "Power law exponent"],
45              ["bkgd", "", 0.0, [-inf, inf], "", "Background level"]]
46
47def Iq(scale,m,bkgd):
48    inten = (scale * q ** m + bkgd)
49    return inten
50Iq.vectorized = True  # Iq accepts an array of Q values
51
52def Iqxy(qx, qy, *args):
53    return Iq(sqrt(qx ** 2 + qy ** 2), *args)
54Iqxy.vectorized = True # Iqxy accepts an array of Qx, Qy values
55
56demo = dict(scale=1.0,
57            m=4.0,
58            bkgd=0.0)
59
60oldname = "PowerLawAbsModel"
61oldpars = dict(scale='scale',
62               m='m',
63               bkgd='background')
64
65tests = [
66        [ {'scale': 1.0, 'm': 4.0, 'bkgd' : 0.0}, [0.0106939, 0.469418], [7.64644e+07, 20.5949]]
67        ]
Note: See TracBrowser for help on using the repository browser.