source: sasview/sansmodels/src/sans/models/c_models/c_models.cpp @ 770e4c9

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 770e4c9 was 770e4c9, checked in by Gervaise Alina <gervyh@…>, 15 years ago

reove unused model module

  • Property mode set to 100644
File size: 5.5 KB
Line 
1/** c_models
2 *
3 * Module containing all SANS model extensions
4 *
5 * @author   M.Doucet / UTK
6 */
7#include <Python.h>
8#include <parameters.hh>
9
10void addCCylinderModel(PyObject *module);
11void addCTriaxialEllipsoidModel(PyObject *module);
12void addCParallelepipedModel(PyObject *module);
13void addCSphereModel(PyObject *module);
14void addCHardsphereStructure(PyObject *module);
15void addCStickyHSStructure(PyObject *module);
16void addCSquareWellStructure(PyObject *module);
17void addCHayterMSAStructure(PyObject *module);
18void addCDiamEllipFunc(PyObject *module);
19void addCDiamCylFunc(PyObject *module);
20void addCCoreShellModel(PyObject *module);
21void addCCoreShellCylinderModel(PyObject *module);
22void addCEllipsoidModel(PyObject *module);
23void addCEllipticalCylinderModel(PyObject *module);
24void addCTriaxialEllipsoidModel(PyObject *module);
25void addCFlexibleCylinderModel(PyObject *module);
26void addCStackedDisksModel(PyObject *module);
27void addCLamellarPSModel(PyObject *module);
28void addCLamellarPSHGModel(PyObject *module);
29void addCOblateModel(PyObject *module);
30void addCProlateModel(PyObject *module);
31void addCLamellarModel(PyObject *module);
32void addCLamellarFFHGModel(PyObject *module);
33void addCHollowCylinderModel(PyObject *module);
34void addCMultiShellModel(PyObject *module);
35void addCVesicleModel(PyObject *module);
36void addCBinaryHSModel(PyObject *module);
37
38
39extern "C" {
40        //void addCCoreShellCylinderModel(PyObject *module);
41        //void addCCoreShellModel(PyObject *module);
42        //void addCEllipsoidModel(PyObject *module);
43        //void addCEllipticalCylinderModel(PyObject *module);
44        void addDisperser(PyObject *module);
45        void addCGaussian(PyObject *module);
46        void addCLorentzian(PyObject *module);
47}
48
49/**
50 * Delete a dispersion model object
51 */
52void del_dispersion_model(void *ptr){
53        DispersionModel * disp = static_cast<DispersionModel *>(ptr);
54        delete disp;
55        return;
56}
57
58/**
59 * Create a dispersion model as a python object
60 */
61PyObject * new_dispersion_model(PyObject *, PyObject *args) {
62        DispersionModel *disp = new DispersionModel();
63        return PyCObject_FromVoidPtr(disp, del_dispersion_model);
64}
65
66
67/**
68 * Delete a gaussian dispersion model object
69 */
70void del_gaussian_dispersion(void *ptr){
71        GaussianDispersion * disp = static_cast<GaussianDispersion *>(ptr);
72        delete disp;
73        return;
74}
75
76/**
77 * Create a gaussian dispersion model as a python object
78 */
79PyObject * new_gaussian_dispersion(PyObject *, PyObject *args) {
80        GaussianDispersion *disp = new GaussianDispersion();
81        return PyCObject_FromVoidPtr(disp, del_gaussian_dispersion);
82}
83
84/**
85 * Delete an array dispersion model object
86 */
87void del_array_dispersion(void *ptr){
88        ArrayDispersion * disp = static_cast<ArrayDispersion *>(ptr);
89        delete disp;
90        return;
91}
92
93/**
94 * Create an array dispersion model as a python object
95 */
96PyObject * new_array_dispersion(PyObject *, PyObject *args) {
97        ArrayDispersion *disp = new ArrayDispersion();
98        return PyCObject_FromVoidPtr(disp, del_array_dispersion);
99}
100
101#define INVECTOR(obj,buf,len)                                                                           \
102    do { \
103        int err = PyObject_AsReadBuffer(obj, (const void **)(&buf), &len); \
104        if (err < 0) return NULL; \
105        len /= sizeof(*buf); \
106    } while (0)
107
108/**
109 * Sets weights from a numpy array
110 */
111PyObject * set_weights(PyObject *, PyObject *args) {
112        PyObject *val_obj;
113        PyObject *wei_obj;
114        PyObject *disp;
115        Py_ssize_t nval;
116        Py_ssize_t nwei;
117        double *values;
118        double *weights;
119    int i;
120
121        if (!PyArg_ParseTuple(args, "OOO", &disp, &val_obj, &wei_obj)) return NULL;
122        INVECTOR(val_obj, values, nval);
123        INVECTOR(wei_obj, weights, nwei);
124
125        // Sanity check
126        if(nval!=nwei) return NULL;
127
128        // Set the array pointers
129        void *temp = PyCObject_AsVoidPtr(disp);
130        DispersionModel * dispersion = static_cast<DispersionModel *>(temp);
131        dispersion->set_weights(nval, values, weights);
132
133        return Py_BuildValue("i",1);
134}
135
136
137
138/**
139 * Define empty module
140 */
141static PyMethodDef module_methods[] = {
142        {"new_dispersion_model", (PyCFunction)new_dispersion_model     , METH_VARARGS,
143                  "Create a new DispersionModel object"},
144        {"new_gaussian_model",   (PyCFunction)new_gaussian_dispersion, METH_VARARGS,
145                  "Create a new GaussianDispersion object"},
146        {"new_array_model",      (PyCFunction)new_array_dispersion  , METH_VARARGS,
147                  "Create a new ArrayDispersion object"},
148        {"set_dispersion_weights",(PyCFunction)set_weights  , METH_VARARGS,
149                        "Create the dispersion weight arrays for an Array Dispersion object"},
150    {NULL}
151};
152
153
154#ifndef PyMODINIT_FUNC  /* declarations for DLL import/export */
155#define PyMODINIT_FUNC void
156#endif
157PyMODINIT_FUNC
158initc_models(void)
159{
160    PyObject* m;
161
162    m = Py_InitModule3("c_models", module_methods,
163                       "C extension module for SANS scattering models.");
164
165        addCCylinderModel(m);
166        addCParallelepipedModel(m);
167        addCCoreShellCylinderModel(m);
168        addCCoreShellModel(m);
169        addCEllipsoidModel(m);
170        addCSphereModel(m);
171        addCHardsphereStructure(m);
172        addCStickyHSStructure(m);
173        addCSquareWellStructure(m);
174        addCHayterMSAStructure(m);
175        addCDiamEllipFunc(m);
176        addCDiamCylFunc(m);
177        addCEllipticalCylinderModel(m);
178        addCTriaxialEllipsoidModel(m);
179        addCFlexibleCylinderModel(m);
180        addCStackedDisksModel(m);
181        addCLamellarPSModel(m);
182        addCLamellarPSHGModel(m);
183        addCOblateModel(m);
184        addCProlateModel(m);
185        addCLamellarModel(m);
186        addCLamellarFFHGModel(m);
187        addCHollowCylinderModel(m);
188        addCMultiShellModel(m);
189        addCBinaryHSModel(m);
190        addDisperser(m);
191        addCGaussian(m);
192        addCLorentzian(m);
193        addCVesicleModel(m);
194
195
196}
Note: See TracBrowser for help on using the repository browser.