source: sasview/sansmodels/src/sans/models/c_models/models.hh @ 0b99881

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 0b99881 was 25579e8, checked in by Jae Cho <jhjcho@…>, 16 years ago

Enable structure factors

  • Property mode set to 100644
File size: 4.4 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, University of Tennessee
13 */
14#ifndef MODEL_CLASS_H
15#define MODEL_CLASS_H
16
17#include <vector>
18#include "parameters.hh"
19extern "C" {
20        #include "cylinder.h"
21}
22
23using namespace std;
24
25class CylinderModel{
26public:
27        // Model parameters
28        Parameter radius;
29        Parameter scale;
30        Parameter length;
31        Parameter contrast;
32        Parameter background;
33        Parameter cyl_theta;
34        Parameter cyl_phi;
35
36        // Constructor
37        CylinderModel();
38
39        // Operators to get I(Q)
40        double operator()(double q);
41        double operator()(double qx, double qy);
42        double evaluate_rphi(double q, double phi);
43};
44
45class SphereModel{
46public:
47        // Model parameters
48        Parameter radius;
49        Parameter scale;
50        Parameter contrast;
51        Parameter background;
52
53        // Constructor
54        SphereModel();
55
56        // Operators to get I(Q)
57        double operator()(double q);
58        double operator()(double qx, double qy);
59        double evaluate_rphi(double q, double phi);
60};
61
62class HardsphereStructure{
63public:
64        // Model parameters
65        Parameter radius;
66        Parameter volfraction;
67
68        // Constructor
69        HardsphereStructure();
70
71        // Operators to get I(Q)
72        double operator()(double q);
73        double operator()(double qx, double qy);
74        double evaluate_rphi(double q, double phi);
75};
76
77class StickyHSStructure{
78public:
79        // Model parameters
80        Parameter radius;
81        Parameter volfraction;
82        Parameter perturb;
83        Parameter stickiness;
84
85        // Constructor
86        StickyHSStructure();
87
88        // Operators to get I(Q)
89        double operator()(double q);
90        double operator()(double qx, double qy);
91        double evaluate_rphi(double q, double phi);
92};
93
94class SquareWellStructure{
95public:
96        // Model parameters
97        Parameter radius;
98        Parameter volfraction;
99        Parameter welldepth;
100        Parameter wellwidth;
101
102        // Constructor
103        SquareWellStructure();
104
105        // Operators to get I(Q)
106        double operator()(double q);
107        double operator()(double qx, double qy);
108        double evaluate_rphi(double q, double phi);
109};
110
111class HayterMSAStructure{
112public:
113        // Model parameters
114        Parameter radius;
115        Parameter charge;
116        Parameter volfraction;
117        Parameter temperature;
118        Parameter saltconc;
119        Parameter dielectconst;
120       
121        // Constructor
122        HayterMSAStructure();
123
124        // Operators to get I(Q)
125        double operator()(double q);
126        double operator()(double qx, double qy);
127        double evaluate_rphi(double q, double phi);
128};
129
130class CoreShellModel{
131public:
132        // Model parameters
133        Parameter radius;
134        Parameter scale;
135        Parameter thickness;
136        Parameter core_sld;
137        Parameter shell_sld;
138        Parameter solvent_sld;
139        Parameter background;
140
141        // Constructor
142        CoreShellModel();
143
144        // Operators to get I(Q)
145        double operator()(double q);
146        double operator()(double qx, double qy);
147        double evaluate_rphi(double q, double phi);
148};
149
150class CoreShellCylinderModel{
151public:
152        // Model parameters
153        Parameter radius;
154        Parameter scale;
155        Parameter thickness;
156        Parameter length;
157        Parameter core_sld;
158        Parameter shell_sld;
159        Parameter solvent_sld;
160        Parameter background;
161        Parameter axis_theta;
162        Parameter axis_phi;
163
164        // Constructor
165        CoreShellCylinderModel();
166
167        // Operators to get I(Q)
168        double operator()(double q);
169        double operator()(double qx, double qy);
170        double evaluate_rphi(double q, double phi);
171};
172
173class EllipsoidModel{
174public:
175        // Model parameters
176        Parameter radius_a;
177        Parameter scale;
178        Parameter radius_b;
179        Parameter contrast;
180        Parameter background;
181        Parameter axis_theta;
182        Parameter axis_phi;
183
184        // Constructor
185        EllipsoidModel();
186
187        // Operators to get I(Q)
188        double operator()(double q);
189        double operator()(double qx, double qy);
190        double evaluate_rphi(double q, double phi);
191};
192
193class EllipticalCylinderModel{
194public:
195        // Model parameters
196        Parameter r_minor;
197        Parameter scale;
198        Parameter r_ratio;
199        Parameter length;
200        Parameter contrast;
201        Parameter background;
202        Parameter cyl_theta;
203        Parameter cyl_phi;
204        Parameter cyl_psi;
205
206        // Constructor
207        EllipticalCylinderModel();
208
209        // Operators to get I(Q)
210        double operator()(double q);
211        double operator()(double qx, double qy);
212        double evaluate_rphi(double q, double phi);
213};
214
215#endif
Note: See TracBrowser for help on using the repository browser.