source: sasview/sansmodels/src/c_models/models.hh @ 98fdccd

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 98fdccd was 011e0e4, checked in by Mathieu Doucet <doucetm@…>, 13 years ago

core-shell + ellipsoid refactor

  • Property mode set to 100644
File size: 8.8 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        #include "parallelepiped.h"
22        #include "lamellarPS.h"
23        #include "lamellar.h"
24        #include "fuzzysphere.h"
25}
26
27using namespace std;
28
29class EllipticalCylinderModel{
30public:
31        // Model parameters
32        Parameter r_minor;
33        Parameter scale;
34        Parameter r_ratio;
35        Parameter length;
36        Parameter sldCyl;
37        Parameter sldSolv;
38        Parameter background;
39        Parameter cyl_theta;
40        Parameter cyl_phi;
41        Parameter cyl_psi;
42
43        // Constructor
44        EllipticalCylinderModel();
45
46        // Operators to get I(Q)
47        double operator()(double q);
48        double operator()(double qx, double qy);
49        double calculate_ER();
50        double evaluate_rphi(double q, double phi);
51};
52class TriaxialEllipsoidModel{
53public:
54        // Model parameters
55        Parameter scale;
56        Parameter semi_axisA;
57        Parameter semi_axisB;
58        Parameter semi_axisC;
59        Parameter sldEll;
60        Parameter sldSolv;
61        Parameter background;
62        Parameter axis_theta;
63        Parameter axis_phi;
64        Parameter axis_psi;
65
66        // Constructor
67        TriaxialEllipsoidModel();
68
69        // Operators to get I(Q)
70        double operator()(double q);
71        double operator()(double qx, double qy);
72        double calculate_ER();
73        double evaluate_rphi(double q, double phi);
74};
75
76class FlexibleCylinderModel{
77public:
78        // Model parameters
79        Parameter scale;
80        Parameter length;
81        Parameter kuhn_length;
82        Parameter radius;
83        Parameter sldCyl;
84        Parameter sldSolv;
85        Parameter background;
86
87        // Constructor
88        FlexibleCylinderModel();
89
90        // Operators to get I(Q)
91        double operator()(double q);
92        double operator()(double qx, double qy);
93        double calculate_ER();
94        double evaluate_rphi(double q, double phi);
95};
96
97class FlexCylEllipXModel{
98public:
99        // Model parameters
100        Parameter scale;
101        Parameter length;
102        Parameter kuhn_length;
103        Parameter radius;
104        Parameter axis_ratio;
105        Parameter sldCyl;
106        Parameter sldSolv;
107        Parameter background;
108
109        // Constructor
110        FlexCylEllipXModel();
111
112        // Operators to get I(Q)
113        double operator()(double q);
114        double operator()(double qx, double qy);
115        double calculate_ER();
116        double evaluate_rphi(double q, double phi);
117};
118
119class StackedDisksModel{
120public:
121        // Model parameters
122        Parameter scale;
123        Parameter core_thick;
124        Parameter radius;
125        Parameter layer_thick;
126        Parameter core_sld;
127        Parameter layer_sld;
128        Parameter solvent_sld;
129        Parameter n_stacking;
130        Parameter sigma_d;
131        Parameter background;
132        Parameter axis_theta;
133        Parameter axis_phi;
134
135        // Constructor
136        StackedDisksModel();
137
138        // Operators to get I(Q)
139        double operator()(double q);
140        double operator()(double qx, double qy);
141        double calculate_ER();
142        double evaluate_rphi(double q, double phi);
143};
144
145class LamellarModel{
146public:
147        // Model parameters
148        Parameter scale;
149        Parameter bi_thick;
150        Parameter sld_bi;
151        Parameter sld_sol;
152        Parameter background;
153
154        // Constructor
155        LamellarModel();
156
157        // Operators to get I(Q)
158        double operator()(double q);
159        double operator()(double qx, double qy);
160        double calculate_ER();
161        double evaluate_rphi(double q, double phi);
162
163};
164
165class LamellarFFHGModel{
166public:
167        // Model parameters
168        Parameter scale;
169        Parameter t_length;
170        Parameter h_thickness;
171        Parameter sld_tail;
172        Parameter sld_head;
173        Parameter sld_solvent;
174        Parameter background;
175
176        // Constructor
177        LamellarFFHGModel();
178
179        // Operators to get I(Q)
180        double operator()(double q);
181        double operator()(double qx, double qy);
182        double calculate_ER();
183        double evaluate_rphi(double q, double phi);
184
185};
186
187
188
189class LamellarPSModel{
190public:
191        // Model parameters
192        Parameter scale;
193        Parameter spacing;
194        Parameter delta;
195        Parameter sld_bi;
196        Parameter sld_sol;
197        Parameter n_plates;
198        Parameter caille;
199        Parameter background;
200
201        // Constructor
202        LamellarPSModel();
203
204        // Operators to get I(Q)
205        double operator()(double q);
206        double operator()(double qx, double qy);
207        double calculate_ER();
208        double evaluate_rphi(double q, double phi);
209};
210
211class LamellarPSHGModel{
212public:
213        // Model parameters
214        Parameter scale;
215        Parameter spacing;
216        Parameter deltaT;
217        Parameter deltaH;
218        Parameter sld_tail;
219        Parameter sld_head;
220        Parameter sld_solvent;
221        Parameter n_plates;
222        Parameter caille;
223        Parameter background;
224
225        // Constructor
226        LamellarPSHGModel();
227
228        // Operators to get I(Q)
229        double operator()(double q);
230        double operator()(double qx, double qy);
231        double calculate_ER();
232        double evaluate_rphi(double q, double phi);
233};
234
235
236class LamellarPCrystalModel{
237public:
238        // Model parameters
239        Parameter scale;
240        Parameter thickness;
241        Parameter Nlayers;
242        Parameter spacing;
243        Parameter pd_spacing;
244        Parameter sld_layer;
245        Parameter sld_solvent;
246        Parameter background;
247
248        // Constructor
249        LamellarPCrystalModel();
250
251        // Operators to get I(Q)
252        double operator()(double q);
253        double operator()(double qx, double qy);
254        double calculate_ER();
255        double evaluate_rphi(double q, double phi);
256};
257
258class CoreShellEllipsoidModel{
259public:
260        // Model parameters
261        Parameter scale;
262        Parameter equat_core;
263        Parameter polar_core;
264        Parameter equat_shell;
265        Parameter polar_shell;
266        Parameter sld_core;
267        Parameter sld_shell;
268        Parameter sld_solvent;
269        Parameter background;
270        Parameter axis_theta;
271        Parameter axis_phi;
272
273        // Constructor
274        CoreShellEllipsoidModel();
275
276        // Operators to get I(Q)
277        double operator()(double q);
278        double operator()(double qx, double qy);
279        double calculate_ER();
280        double evaluate_rphi(double q, double phi);
281};
282
283class HollowCylinderModel{
284public:
285        // Model parameters
286        Parameter scale;
287        Parameter core_radius;
288        Parameter radius;
289        Parameter length;
290        Parameter sldCyl;
291        Parameter sldSolv;
292        Parameter background;
293        Parameter axis_theta;
294        Parameter axis_phi;
295
296        //Constructor
297        HollowCylinderModel();
298
299        //Operators to get I(Q)
300        double operator()(double q);
301        double operator()(double qx , double qy);
302        double calculate_ER();
303        double evaluate_rphi(double q, double phi);
304};
305
306class MultiShellModel{
307public:
308        // Model parameters
309        Parameter scale;
310        Parameter core_radius;
311        Parameter s_thickness;
312        Parameter w_thickness;
313        Parameter core_sld;
314        Parameter shell_sld;
315        Parameter n_pairs;
316        Parameter background;
317
318        //Constructor
319        MultiShellModel();
320
321        //Operators to get I(Q)
322        double operator()(double q);
323        double operator()(double qx , double qy);
324        double calculate_ER();
325        double evaluate_rphi(double q, double phi);
326};
327
328class VesicleModel{
329public:
330        // Model parameters
331        Parameter scale;
332        Parameter radius;
333        Parameter thickness;
334        Parameter core_sld;
335        Parameter shell_sld;
336        Parameter background;
337
338        //Constructor
339        VesicleModel();
340
341        //Operators to get I(Q)
342        double operator()(double q);
343        double operator()(double qx , double qy);
344        double calculate_ER();
345        double evaluate_rphi(double q, double phi);
346};
347
348class BinaryHSModel{
349public:
350        // Model parameters
351        Parameter l_radius;
352        Parameter s_radius;
353        Parameter vol_frac_ls;
354        Parameter vol_frac_ss;
355        Parameter ls_sld;
356        Parameter ss_sld;
357        Parameter solvent_sld;
358        Parameter background;
359
360        //Constructor
361        BinaryHSModel();
362
363        //Operators to get I(Q)
364        double operator()(double q);
365        double operator()(double qx , double qy);
366        double calculate_ER();
367        double evaluate_rphi(double q, double phi);
368};
369
370class BinaryHSPSF11Model{
371public:
372        // Model parameters
373        Parameter l_radius;
374        Parameter s_radius;
375        Parameter vol_frac_ls;
376        Parameter vol_frac_ss;
377        Parameter ls_sld;
378        Parameter ss_sld;
379        Parameter solvent_sld;
380        Parameter background;
381
382        //Constructor
383        BinaryHSPSF11Model();
384
385        //Operators to get I(Q)
386        double operator()(double q);
387        double operator()(double qx , double qy);
388        double calculate_ER();
389        double evaluate_rphi(double q, double phi);
390};
391
392class Poly_GaussCoil{
393public:
394        // Model parameters
395        Parameter rg;
396        Parameter scale;
397        Parameter poly_m;
398        Parameter background;
399
400        // Constructor
401        Poly_GaussCoil();
402
403        // Operators to get I(Q)
404        double operator()(double q);
405        double operator()(double qx, double qy);
406        double calculate_ER();
407        double evaluate_rphi(double q, double phi);
408};
409
410class FractalModel{
411public:
412        // Model parameters
413        Parameter radius;
414        Parameter scale;
415        Parameter fractal_dim;
416        Parameter cor_length;
417        Parameter sldBlock;
418        Parameter sldSolv;
419        Parameter background;
420
421        // Constructor
422        FractalModel();
423
424        // Operators to get I(Q)
425        double operator()(double q);
426        double operator()(double qx, double qy);
427        double calculate_ER();
428        double evaluate_rphi(double q, double phi);
429};
430
431#endif
Note: See TracBrowser for help on using the repository browser.