source: sasview/sansmodels/src/sans/models/c_models/models.hh @ 25a608f5

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 25a608f5 was a0782f1, checked in by Jae Cho <jhjcho@…>, 15 years ago

Added 2nd virial coeff. functions

  • Property mode set to 100644
File size: 5.0 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 DiamEllipFunc{
131public:
132        // Model parameters
133        Parameter radius_a;
134        Parameter radius_b;
135
136        // Constructor
137        DiamEllipFunc();
138
139        // Operators to get I(Q)
140        double operator()(double q);
141        double operator()(double qx, double qy);
142        double evaluate_rphi(double q, double phi);
143};
144
145class DiamCylFunc{
146public:
147        // Model parameters
148        Parameter radius;
149        Parameter length;
150
151        // Constructor
152        DiamCylFunc();
153
154        // Operators to get I(Q)
155        double operator()(double q);
156        double operator()(double qx, double qy);
157        double evaluate_rphi(double q, double phi);
158};
159
160class CoreShellModel{
161public:
162        // Model parameters
163        Parameter radius;
164        Parameter scale;
165        Parameter thickness;
166        Parameter core_sld;
167        Parameter shell_sld;
168        Parameter solvent_sld;
169        Parameter background;
170
171        // Constructor
172        CoreShellModel();
173
174        // Operators to get I(Q)
175        double operator()(double q);
176        double operator()(double qx, double qy);
177        double evaluate_rphi(double q, double phi);
178};
179
180class CoreShellCylinderModel{
181public:
182        // Model parameters
183        Parameter radius;
184        Parameter scale;
185        Parameter thickness;
186        Parameter length;
187        Parameter core_sld;
188        Parameter shell_sld;
189        Parameter solvent_sld;
190        Parameter background;
191        Parameter axis_theta;
192        Parameter axis_phi;
193
194        // Constructor
195        CoreShellCylinderModel();
196
197        // Operators to get I(Q)
198        double operator()(double q);
199        double operator()(double qx, double qy);
200        double evaluate_rphi(double q, double phi);
201};
202
203class EllipsoidModel{
204public:
205        // Model parameters
206        Parameter radius_a;
207        Parameter scale;
208        Parameter radius_b;
209        Parameter contrast;
210        Parameter background;
211        Parameter axis_theta;
212        Parameter axis_phi;
213
214        // Constructor
215        EllipsoidModel();
216
217        // Operators to get I(Q)
218        double operator()(double q);
219        double operator()(double qx, double qy);
220        double evaluate_rphi(double q, double phi);
221};
222
223class EllipticalCylinderModel{
224public:
225        // Model parameters
226        Parameter r_minor;
227        Parameter scale;
228        Parameter r_ratio;
229        Parameter length;
230        Parameter contrast;
231        Parameter background;
232        Parameter cyl_theta;
233        Parameter cyl_phi;
234        Parameter cyl_psi;
235
236        // Constructor
237        EllipticalCylinderModel();
238
239        // Operators to get I(Q)
240        double operator()(double q);
241        double operator()(double qx, double qy);
242        double evaluate_rphi(double q, double phi);
243};
244
245#endif
Note: See TracBrowser for help on using the repository browser.