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

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 c724ccd was c724ccd, checked in by Jae Cho <jhjcho@…>, 14 years ago

More models added and correction of Wrappergenerator on model parameter value precision

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