source: sasview/sansmodels/src/sans/models/c_models/models.hh @ 1d67243

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 1d67243 was 8e36cdd, checked in by Jae Cho <jhjcho@…>, 15 years ago

fixed and tested ppmodel 2d and cleaned it up.

  • Property mode set to 100644
File size: 12.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        #include "parallelepiped.h"
22}
23
24using namespace std;
25
26class CylinderModel{
27public:
28        // Model parameters
29        Parameter radius;
30        Parameter scale;
31        Parameter length;
32        Parameter contrast;
33        Parameter background;
34        Parameter cyl_theta;
35        Parameter cyl_phi;
36
37        // Constructor
38        CylinderModel();
39
40        // Operators to get I(Q)
41        double operator()(double q);
42        double operator()(double qx, double qy);
43        double evaluate_rphi(double q, double phi);
44};
45
46class ParallelepipedModel{
47public:
48        // TODO: add 2D
49        // Model parameters
50        Parameter scale;
51        Parameter short_a;
52        Parameter short_b;
53        Parameter long_c;
54        Parameter contrast;
55        Parameter background;
56        Parameter parallel_theta;
57        Parameter parallel_phi;
58        Parameter parallel_psi;
59
60        // Constructor
61        ParallelepipedModel();
62
63        // Operators to get I(Q)
64        double operator()(double q);
65        double operator()(double qx, double qy);
66        double evaluate_rphi(double q, double phi);
67};
68
69
70class SphereModel{
71public:
72        // Model parameters
73        Parameter radius;
74        Parameter scale;
75        Parameter contrast;
76        Parameter background;
77
78        // Constructor
79        SphereModel();
80
81        // Operators to get I(Q)
82        double operator()(double q);
83        double operator()(double qx, double qy);
84        double evaluate_rphi(double q, double phi);
85};
86
87class HardsphereStructure{
88public:
89        // Model parameters
90        Parameter radius;
91        Parameter volfraction;
92
93        // Constructor
94        HardsphereStructure();
95
96        // Operators to get I(Q)
97        double operator()(double q);
98        double operator()(double qx, double qy);
99        double evaluate_rphi(double q, double phi);
100};
101
102class StickyHSStructure{
103public:
104        // Model parameters
105        Parameter radius;
106        Parameter volfraction;
107        Parameter perturb;
108        Parameter stickiness;
109
110        // Constructor
111        StickyHSStructure();
112
113        // Operators to get I(Q)
114        double operator()(double q);
115        double operator()(double qx, double qy);
116        double evaluate_rphi(double q, double phi);
117};
118
119class SquareWellStructure{
120public:
121        // Model parameters
122        Parameter radius;
123        Parameter volfraction;
124        Parameter welldepth;
125        Parameter wellwidth;
126
127        // Constructor
128        SquareWellStructure();
129
130        // Operators to get I(Q)
131        double operator()(double q);
132        double operator()(double qx, double qy);
133        double evaluate_rphi(double q, double phi);
134};
135
136class HayterMSAStructure{
137public:
138        // Model parameters
139        Parameter radius;
140        Parameter charge;
141        Parameter volfraction;
142        Parameter temperature;
143        Parameter saltconc;
144        Parameter dielectconst;
145
146        // Constructor
147        HayterMSAStructure();
148
149        // Operators to get I(Q)
150        double operator()(double q);
151        double operator()(double qx, double qy);
152        double evaluate_rphi(double q, double phi);
153};
154
155class DiamEllipFunc{
156public:
157        // Model parameters
158        Parameter radius_a;
159        Parameter radius_b;
160
161        // Constructor
162        DiamEllipFunc();
163
164        // Operators to get I(Q)
165        double operator()(double q);
166        double operator()(double qx, double qy);
167        double evaluate_rphi(double q, double phi);
168};
169
170class DiamCylFunc{
171public:
172        // Model parameters
173        Parameter radius;
174        Parameter length;
175
176        // Constructor
177        DiamCylFunc();
178
179        // Operators to get I(Q)
180        double operator()(double q);
181        double operator()(double qx, double qy);
182        double evaluate_rphi(double q, double phi);
183};
184
185class CoreShellModel{
186public:
187        // Model parameters
188        Parameter radius;
189        Parameter scale;
190        Parameter thickness;
191        Parameter core_sld;
192        Parameter shell_sld;
193        Parameter solvent_sld;
194        Parameter background;
195
196        // Constructor
197        CoreShellModel();
198
199        // Operators to get I(Q)
200        double operator()(double q);
201        double operator()(double qx, double qy);
202        double evaluate_rphi(double q, double phi);
203};
204
205class CoreShellCylinderModel{
206public:
207        // Model parameters
208        Parameter radius;
209        Parameter scale;
210        Parameter thickness;
211        Parameter length;
212        Parameter core_sld;
213        Parameter shell_sld;
214        Parameter solvent_sld;
215        Parameter background;
216        Parameter axis_theta;
217        Parameter axis_phi;
218
219        // Constructor
220        CoreShellCylinderModel();
221
222        // Operators to get I(Q)
223        double operator()(double q);
224        double operator()(double qx, double qy);
225        double evaluate_rphi(double q, double phi);
226};
227
228class EllipsoidModel{
229public:
230        // Model parameters
231        Parameter radius_a;
232        Parameter scale;
233        Parameter radius_b;
234        Parameter contrast;
235        Parameter background;
236        Parameter axis_theta;
237        Parameter axis_phi;
238
239        // Constructor
240        EllipsoidModel();
241
242        // Operators to get I(Q)
243        double operator()(double q);
244        double operator()(double qx, double qy);
245        double evaluate_rphi(double q, double phi);
246};
247
248class EllipticalCylinderModel{
249public:
250        // Model parameters
251        Parameter r_minor;
252        Parameter scale;
253        Parameter r_ratio;
254        Parameter length;
255        Parameter contrast;
256        Parameter background;
257        Parameter cyl_theta;
258        Parameter cyl_phi;
259        Parameter cyl_psi;
260
261        // Constructor
262        EllipticalCylinderModel();
263
264        // Operators to get I(Q)
265        double operator()(double q);
266        double operator()(double qx, double qy);
267        double evaluate_rphi(double q, double phi);
268};
269class TriaxialEllipsoidModel{
270public:
271        // Model parameters
272        Parameter scale;
273        Parameter semi_axisA;
274        Parameter semi_axisB;
275        Parameter semi_axisC;
276        Parameter contrast;
277        Parameter background;
278        Parameter axis_theta;
279        Parameter axis_phi;
280        Parameter axis_psi;
281
282        // Constructor
283        TriaxialEllipsoidModel();
284
285        // Operators to get I(Q)
286        double operator()(double q);
287        double operator()(double qx, double qy);
288        double evaluate_rphi(double q, double phi);
289};
290
291class FlexibleCylinderModel{
292public:
293        // Model parameters
294        Parameter scale;
295        Parameter length;
296        Parameter kuhn_length;
297        Parameter radius;
298        Parameter contrast;
299        Parameter background;
300        Parameter axis_theta;
301        Parameter axis_phi;
302
303        // Constructor
304        FlexibleCylinderModel();
305
306        // Operators to get I(Q)
307        double operator()(double q);
308        double operator()(double qx, double qy);
309        double evaluate_rphi(double q, double phi);
310};
311
312class StackedDisksModel{
313public:
314        // Model parameters
315        Parameter scale;
316        Parameter core_thick;
317        Parameter radius;
318        Parameter layer_thick;
319        Parameter core_sld;
320        Parameter layer_sld;
321        Parameter solvent_sld;
322        Parameter n_stacking;
323        Parameter sigma_d;
324        Parameter background;
325        Parameter axis_theta;
326        Parameter axis_phi;
327
328        // Constructor
329        StackedDisksModel();
330
331        // Operators to get I(Q)
332        double operator()(double q);
333        double operator()(double qx, double qy);
334        double evaluate_rphi(double q, double phi);
335};
336
337class LamellarModel{
338public:
339        // Model parameters
340        Parameter scale;
341        Parameter bi_thick;
342        Parameter sld_bi;
343        Parameter sld_sol;
344        Parameter background;
345
346        // Constructor
347        LamellarModel();
348
349        // Operators to get I(Q)
350        double operator()(double q);
351        double operator()(double qx, double qy);
352        double evaluate_rphi(double q, double phi);
353
354};
355
356class LamellarFFHGModel{
357public:
358        // Model parameters
359        Parameter scale;
360        Parameter t_length;
361        Parameter h_thickness;
362        Parameter sld_tail;
363        Parameter sld_head;
364        Parameter sld_solvent;
365        Parameter background;
366
367        // Constructor
368        LamellarFFHGModel();
369
370        // Operators to get I(Q)
371        double operator()(double q);
372        double operator()(double qx, double qy);
373        double evaluate_rphi(double q, double phi);
374
375};
376
377
378
379class LamellarPSModel{
380public:
381        // Model parameters
382        Parameter scale;
383        Parameter spacing;
384        Parameter delta;
385        Parameter sigma;
386        Parameter contrast;
387        Parameter n_plates;
388        Parameter caille;
389        Parameter background;
390
391        // Constructor
392        LamellarPSModel();
393
394        // Operators to get I(Q)
395        double operator()(double q);
396        double operator()(double qx, double qy);
397        double evaluate_rphi(double q, double phi);
398};
399
400class LamellarPSHGModel{
401public:
402        // Model parameters
403        Parameter scale;
404        Parameter spacing;
405        Parameter deltaT;
406        Parameter deltaH;
407        Parameter sld_tail;
408        Parameter sld_head;
409        Parameter sld_solvent;
410        Parameter n_plates;
411        Parameter caille;
412        Parameter background;
413
414        // Constructor
415        LamellarPSHGModel();
416
417        // Operators to get I(Q)
418        double operator()(double q);
419        double operator()(double qx, double qy);
420        double evaluate_rphi(double q, double phi);
421};
422
423class CoreShellEllipsoidModel{
424public:
425        // Model parameters
426        Parameter scale;
427        Parameter equat_core;
428        Parameter polar_core;
429        Parameter equat_shell;
430        Parameter polar_shell;
431        Parameter contrast;
432        Parameter sld_solvent;
433        Parameter background;
434        Parameter axis_theta;
435        Parameter axis_phi;
436
437        // Constructor
438        CoreShellEllipsoidModel();
439
440        // Operators to get I(Q)
441        double operator()(double q);
442        double operator()(double qx, double qy);
443        double evaluate_rphi(double q, double phi);
444};
445
446class OblateModel{
447public:
448        // Model parameters
449        Parameter scale;
450        Parameter major_core;
451        Parameter minor_core;
452        Parameter major_shell;
453        Parameter minor_shell;
454        Parameter contrast;
455        Parameter sld_solvent;
456        Parameter background;
457        Parameter axis_theta;
458        Parameter axis_phi;
459
460        // Constructor
461        OblateModel();
462
463        // Operators to get I(Q)
464        double operator()(double q);
465        double operator()(double qx, double qy);
466        double evaluate_rphi(double q, double phi);
467};
468class ProlateModel{
469public:
470        // Model parameters
471        Parameter scale;
472        Parameter major_core;
473        Parameter minor_core;
474        Parameter major_shell;
475        Parameter minor_shell;
476        Parameter contrast;
477        Parameter sld_solvent;
478        Parameter background;
479        Parameter axis_theta;
480        Parameter axis_phi;
481
482        // Constructor
483        ProlateModel();
484
485        // Operators to get I(Q)
486        double operator()(double q);
487        double operator()(double qx, double qy);
488        double evaluate_rphi(double q, double phi);
489};
490class HollowCylinderModel{
491public:
492        // Model parameters
493        Parameter scale;
494        Parameter core_radius;
495        Parameter shell_radius;
496        Parameter length;
497        Parameter contrast;
498        Parameter background;
499        Parameter axis_theta;
500        Parameter axis_phi;
501
502        //Constructor
503        HollowCylinderModel();
504
505        //Operators to get I(Q)
506        double operator()(double q);
507        double operator()(double qx , double qy);
508        double evaluate_rphi(double q, double phi);
509};
510
511class MultiShellModel{
512public:
513        // Model parameters
514        Parameter scale;
515        Parameter core_radius;
516        Parameter s_thickness;
517        Parameter w_thickness;
518        Parameter core_sld;
519        Parameter shell_sld;
520        Parameter n_pairs;
521        Parameter background;
522
523        //Constructor
524        MultiShellModel();
525
526        //Operators to get I(Q)
527        double operator()(double q);
528        double operator()(double qx , double qy);
529        double evaluate_rphi(double q, double phi);
530};
531
532class VesicleModel{
533public:
534        // Model parameters
535        Parameter scale;
536        Parameter core_radius;
537        Parameter thickness;
538        Parameter core_sld;
539        Parameter shell_sld;
540        Parameter background;
541
542        //Constructor
543        VesicleModel();
544
545        //Operators to get I(Q)
546        double operator()(double q);
547        double operator()(double qx , double qy);
548        double evaluate_rphi(double q, double phi);
549};
550
551class BinaryHSModel{
552public:
553        // Model parameters
554        Parameter l_radius;
555        Parameter s_radius;
556        Parameter vol_frac_ls;
557        Parameter vol_frac_ss;
558        Parameter ls_sld;
559        Parameter ss_sld;
560        Parameter solvent_sld;
561        Parameter background;
562
563        //Constructor
564        BinaryHSModel();
565
566        //Operators to get I(Q)
567        double operator()(double q);
568        double operator()(double qx , double qy);
569        double evaluate_rphi(double q, double phi);
570};
571
572class BinaryHSPSF11Model{
573public:
574        // Model parameters
575        Parameter l_radius;
576        Parameter s_radius;
577        Parameter vol_frac_ls;
578        Parameter vol_frac_ss;
579        Parameter ls_sld;
580        Parameter ss_sld;
581        Parameter solvent_sld;
582        Parameter background;
583
584        //Constructor
585        BinaryHSPSF11Model();
586
587        //Operators to get I(Q)
588        double operator()(double q);
589        double operator()(double qx , double qy);
590        double evaluate_rphi(double q, double phi);
591};
592
593#endif
Note: See TracBrowser for help on using the repository browser.