source: sasview/sansmodels/src/sans/models/c_models/models.hh @ 04349fe

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 04349fe was 261b864, checked in by Jae Cho <jhjcho@…>, 15 years ago

remove poylexclvol.h: not using now

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