source: sasview/src/sans/models/LamellarPSModel.py @ 81b524f

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 81b524f was 81b524f, checked in by Jeff Krzywon <jeffery.krzywon@…>, 11 years ago

This branch is now merged with the latest trunk release. I will merge them next.

  • Property mode set to 100644
File size: 6.3 KB
Line 
1##############################################################################
2# This software was developed by the University of Tennessee as part of the
3# Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
4# project funded by the US National Science Foundation.
5#
6# If you use DANSE applications to do scientific research that leads to
7# publication, we ask that you acknowledge the use of the software with the
8# following sentence:
9#
10# This work benefited from DANSE software developed under NSF award DMR-0520547
11#
12# Copyright 2008-2011, University of Tennessee
13##############################################################################
14
15"""
16Provide functionality for a C extension model
17
18:WARNING: THIS FILE WAS GENERATED BY WRAPPERGENERATOR.PY
19         DO NOT MODIFY THIS FILE, MODIFY
20            src\sans\models\include\lamellarPS.h
21         AND RE-RUN THE GENERATOR SCRIPT
22"""
23
24from sans.models.BaseComponent import BaseComponent
25from sans.models.sans_extension.c_models import CLamellarPSModel
26
27def create_LamellarPSModel():
28    """
29       Create a model instance
30    """
31    obj = LamellarPSModel()
32    # CLamellarPSModel.__init__(obj) is called by
33    # the LamellarPSModel constructor
34    return obj
35
36class LamellarPSModel(CLamellarPSModel, BaseComponent):
37    """
38    Class that evaluates a LamellarPSModel model.
39    This file was auto-generated from src\sans\models\include\lamellarPS.h.
40    Refer to that file and the structure it contains
41    for details of the model.
42    List of default parameters:
43         scale           = 1.0
44         spacing         = 400.0 [A]
45         delta           = 30.0 [A]
46         sld_bi          = 6.3e-06 [1/A^(2)]
47         sld_sol         = 1e-06 [1/A^(2)]
48         n_plates        = 20.0
49         caille          = 0.1
50         background      = 0.0 [1/cm]
51
52    """
53       
54    def __init__(self, multfactor=1):
55        """ Initialization """
56        self.__dict__ = {}
57       
58        # Initialize BaseComponent first, then sphere
59        BaseComponent.__init__(self)
60        #apply(CLamellarPSModel.__init__, (self,))
61
62        CLamellarPSModel.__init__(self)
63        self.is_multifunc = False
64                       
65        ## Name of the model
66        self.name = "LamellarPSModel"
67        ## Model description
68        self.description = """
69        [Concentrated Lamellar Form Factor] Calculates the scattered
70                intensity from a lyotropic lamellar phase.
71                The intensity (form factor and structure
72                factor)calculated is for lamellae of
73                uniform scattering length density that
74                are randomly distributed in solution
75                (a powder average). The lamellae thickness
76                is polydisperse. The model can also
77                be applied to large, multi-lamellar vesicles.
78                No resolution smeared version is included
79                in the structure factor of this model.
80                *Parameters: spacing = repeat spacing,
81                delta = bilayer thickness,
82                sld_bi = SLD_bilayer
83                sld_sol = SLD_solvent
84                n_plate = # of Lamellar plates
85                caille = Caille parameter (<0.8 or <1)
86                background = incoherent bgd
87                scale = scale factor
88        """
89       
90        ## Parameter details [units, min, max]
91        self.details = {}
92        self.details['scale'] = ['', None, None]
93        self.details['spacing'] = ['[A]', None, None]
94        self.details['delta'] = ['[A]', None, None]
95        self.details['sld_bi'] = ['[1/A^(2)]', None, None]
96        self.details['sld_sol'] = ['[1/A^(2)]', None, None]
97        self.details['n_plates'] = ['', None, None]
98        self.details['caille'] = ['', None, None]
99        self.details['background'] = ['[1/cm]', None, None]
100
101        ## fittable parameters
102        self.fixed = ['delta.width',
103                      'spacing.width']
104       
105        ## non-fittable parameters
106        self.non_fittable = []
107       
108        ## parameters with orientation
109        self.orientation_params = []
110
111        ## parameters with magnetism
112        self.magnetic_params = []
113
114        self.category = None
115        self.multiplicity_info = None
116       
117    def __setstate__(self, state):
118        """
119        restore the state of a model from pickle
120        """
121        self.__dict__, self.params, self.dispersion = state
122       
123    def __reduce_ex__(self, proto):
124        """
125        Overwrite the __reduce_ex__ of PyTypeObject *type call in the init of
126        c model.
127        """
128        state = (self.__dict__, self.params, self.dispersion)
129        return (create_LamellarPSModel, tuple(), state, None, None)
130       
131    def clone(self):
132        """ Return a identical copy of self """
133        return self._clone(LamellarPSModel())   
134       
135    def run(self, x=0.0):
136        """
137        Evaluate the model
138       
139        :param x: input q, or [q,phi]
140       
141        :return: scattering function P(q)
142       
143        """
144        return CLamellarPSModel.run(self, x)
145   
146    def runXY(self, x=0.0):
147        """
148        Evaluate the model in cartesian coordinates
149       
150        :param x: input q, or [qx, qy]
151       
152        :return: scattering function P(q)
153       
154        """
155        return CLamellarPSModel.runXY(self, x)
156       
157    def evalDistribution(self, x):
158        """
159        Evaluate the model in cartesian coordinates
160       
161        :param x: input q[], or [qx[], qy[]]
162       
163        :return: scattering function P(q[])
164       
165        """
166        return CLamellarPSModel.evalDistribution(self, x)
167       
168    def calculate_ER(self):
169        """
170        Calculate the effective radius for P(q)*S(q)
171       
172        :return: the value of the effective radius
173       
174        """       
175        return CLamellarPSModel.calculate_ER(self)
176       
177    def calculate_VR(self):
178        """
179        Calculate the volf ratio for P(q)*S(q)
180       
181        :return: the value of the volf ratio
182       
183        """       
184        return CLamellarPSModel.calculate_VR(self)
185             
186    def set_dispersion(self, parameter, dispersion):
187        """
188        Set the dispersion object for a model parameter
189       
190        :param parameter: name of the parameter [string]
191        :param dispersion: dispersion object of type DispersionModel
192       
193        """
194        return CLamellarPSModel.set_dispersion(self,
195               parameter, dispersion.cdisp)
196       
197   
198# End of file
199
Note: See TracBrowser for help on using the repository browser.