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

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

update models due to changes of template

  • Property mode set to 100644
File size: 25.3 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 BarBellModel{
52public:
53        // Model parameters
54        Parameter scale;
55        Parameter rad_bar;
56        Parameter len_bar;
57        Parameter rad_bell;
58        Parameter sld_barbell;
59        Parameter sld_solv;
60        Parameter background;
61        Parameter theta;
62        Parameter phi;
63
64        // Constructor
65        BarBellModel();
66
67        // Operators to get I(Q)
68        double operator()(double q);
69        double operator()(double qx, double qy);
70        double calculate_ER();
71        double evaluate_rphi(double q, double phi);
72};
73
74class CappedCylinderModel{
75public:
76        // Model parameters
77        Parameter scale;
78        Parameter rad_cyl;
79        Parameter len_cyl;
80        Parameter rad_cap;
81        Parameter sld_capcyl;
82        Parameter sld_solv;
83        Parameter background;
84        Parameter theta;
85        Parameter phi;
86
87        // Constructor
88        CappedCylinderModel();
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
97
98class ParallelepipedModel{
99public:
100        // Model parameters
101        Parameter scale;
102        Parameter short_a;
103        Parameter short_b;
104        Parameter long_c;
105        Parameter sldPipe;
106        Parameter sldSolv;
107        Parameter background;
108        Parameter parallel_theta;
109        Parameter parallel_phi;
110        Parameter parallel_psi;
111
112        // Constructor
113        ParallelepipedModel();
114
115        // Operators to get I(Q)
116        double operator()(double q);
117        double operator()(double qx, double qy);
118        double calculate_ER();
119        double evaluate_rphi(double q, double phi);
120};
121
122
123class CSParallelepipedModel{
124public:
125        // Model parameters
126        Parameter scale;
127        Parameter shortA;
128        Parameter midB;
129        Parameter longC;
130        Parameter rimA;
131        Parameter rimB;
132        Parameter rimC;
133        Parameter sld_rimA;
134        Parameter sld_rimB;
135        Parameter sld_rimC;
136        Parameter sld_pcore;
137        Parameter sld_solv;
138        Parameter background;
139        Parameter parallel_theta;
140        Parameter parallel_phi;
141        Parameter parallel_psi;
142
143        // Constructor
144        CSParallelepipedModel();
145
146        // Operators to get I(Q)
147        double operator()(double q);
148        double operator()(double qx, double qy);
149        double calculate_ER();
150        double evaluate_rphi(double q, double phi);
151};
152
153class OnionModel{
154public:
155        // Model parameters
156        Parameter n_shells;
157        Parameter scale;
158        Parameter rad_core0;
159        Parameter sld_core0;
160        Parameter sld_solv;
161        Parameter background;
162
163        Parameter sld_out_shell1;
164        Parameter sld_out_shell2;
165        Parameter sld_out_shell3;
166        Parameter sld_out_shell4;
167        Parameter sld_out_shell5;
168        Parameter sld_out_shell6;
169        Parameter sld_out_shell7;
170        Parameter sld_out_shell8;
171        Parameter sld_out_shell9;
172        Parameter sld_out_shell10;
173
174        Parameter sld_in_shell1;
175        Parameter sld_in_shell2;
176        Parameter sld_in_shell3;
177        Parameter sld_in_shell4;
178        Parameter sld_in_shell5;
179        Parameter sld_in_shell6;
180        Parameter sld_in_shell7;
181        Parameter sld_in_shell8;
182        Parameter sld_in_shell9;
183        Parameter sld_in_shell10;
184
185        Parameter A_shell1;
186        Parameter A_shell2;
187        Parameter A_shell3;
188        Parameter A_shell4;
189        Parameter A_shell5;
190        Parameter A_shell6;
191        Parameter A_shell7;
192        Parameter A_shell8;
193        Parameter A_shell9;
194        Parameter A_shell10;
195
196        Parameter thick_shell1;
197        Parameter thick_shell2;
198        Parameter thick_shell3;
199        Parameter thick_shell4;
200        Parameter thick_shell5;
201        Parameter thick_shell6;
202        Parameter thick_shell7;
203        Parameter thick_shell8;
204        Parameter thick_shell9;
205        Parameter thick_shell10;
206
207        Parameter func_shell1;
208        Parameter func_shell2;
209        Parameter func_shell3;
210        Parameter func_shell4;
211        Parameter func_shell5;
212        Parameter func_shell6;
213        Parameter func_shell7;
214        Parameter func_shell8;
215        Parameter func_shell9;
216        Parameter func_shell10;
217
218        // Constructor
219        OnionModel();
220
221        // Operators to get I(Q)
222        double operator()(double q);
223        double operator()(double qx, double qy);
224        double calculate_ER();
225        double evaluate_rphi(double q, double phi);
226};
227
228
229class RPAModel{
230public:
231        // Model parameters
232        Parameter lcase_n;
233        Parameter ba;
234        Parameter bb;
235        Parameter bc;
236        Parameter bd;
237
238        Parameter Kab;
239        Parameter Kac;
240        Parameter Kad;
241        Parameter Kbc;
242        Parameter Kbd;
243        Parameter Kcd;
244
245        Parameter scale;
246        Parameter background;
247
248        Parameter Na;
249        Parameter Phia;
250        Parameter va;
251        Parameter La;
252
253        Parameter Nb;
254        Parameter Phib;
255        Parameter vb;
256        Parameter Lb;
257
258        Parameter Nc;
259        Parameter Phic;
260        Parameter vc;
261        Parameter Lc;
262
263        Parameter Nd;
264        Parameter Phid;
265        Parameter vd;
266        Parameter Ld;
267
268        // Constructor
269        RPAModel();
270
271        // Operators to get I(Q)
272        double operator()(double q);
273        double operator()(double qx, double qy);
274        double calculate_ER();
275        double evaluate_rphi(double q, double phi);
276};
277
278
279class ReflModel{
280public:
281        // Model parameters
282        Parameter n_layers;
283        Parameter scale;
284        Parameter thick_inter0;
285        Parameter func_inter0;
286        Parameter sld_bottom0;
287        Parameter sld_medium;
288        Parameter background;
289
290        Parameter sld_flat1;
291        Parameter sld_flat2;
292        Parameter sld_flat3;
293        Parameter sld_flat4;
294        Parameter sld_flat5;
295        Parameter sld_flat6;
296        Parameter sld_flat7;
297        Parameter sld_flat8;
298        Parameter sld_flat9;
299        Parameter sld_flat10;
300
301        Parameter thick_inter1;
302        Parameter thick_inter2;
303        Parameter thick_inter3;
304        Parameter thick_inter4;
305        Parameter thick_inter5;
306        Parameter thick_inter6;
307        Parameter thick_inter7;
308        Parameter thick_inter8;
309        Parameter thick_inter9;
310        Parameter thick_inter10;
311
312        Parameter thick_flat1;
313        Parameter thick_flat2;
314        Parameter thick_flat3;
315        Parameter thick_flat4;
316        Parameter thick_flat5;
317        Parameter thick_flat6;
318        Parameter thick_flat7;
319        Parameter thick_flat8;
320        Parameter thick_flat9;
321        Parameter thick_flat10;
322
323        Parameter func_inter1;
324        Parameter func_inter2;
325        Parameter func_inter3;
326        Parameter func_inter4;
327        Parameter func_inter5;
328        Parameter func_inter6;
329        Parameter func_inter7;
330        Parameter func_inter8;
331        Parameter func_inter9;
332        Parameter func_inter10;
333
334        // Constructor
335        ReflModel();
336
337        // Operators to get I(Q)
338        double operator()(double q);
339        double operator()(double qx, double qy);
340        double calculate_ER();
341        double evaluate_rphi(double q, double phi);
342};
343
344
345class ReflAdvModel{
346public:
347        // Model parameters
348        Parameter n_layers;
349        Parameter scale;
350        Parameter thick_inter0;
351        Parameter func_inter0;
352        Parameter sld_bottom0;
353        Parameter sld_medium;
354        Parameter background;
355
356        Parameter sld_flat1;
357        Parameter sld_flat2;
358        Parameter sld_flat3;
359        Parameter sld_flat4;
360        Parameter sld_flat5;
361        Parameter sld_flat6;
362        Parameter sld_flat7;
363        Parameter sld_flat8;
364        Parameter sld_flat9;
365        Parameter sld_flat10;
366
367        Parameter thick_inter1;
368        Parameter thick_inter2;
369        Parameter thick_inter3;
370        Parameter thick_inter4;
371        Parameter thick_inter5;
372        Parameter thick_inter6;
373        Parameter thick_inter7;
374        Parameter thick_inter8;
375        Parameter thick_inter9;
376        Parameter thick_inter10;
377
378        Parameter thick_flat1;
379        Parameter thick_flat2;
380        Parameter thick_flat3;
381        Parameter thick_flat4;
382        Parameter thick_flat5;
383        Parameter thick_flat6;
384        Parameter thick_flat7;
385        Parameter thick_flat8;
386        Parameter thick_flat9;
387        Parameter thick_flat10;
388
389        Parameter func_inter1;
390        Parameter func_inter2;
391        Parameter func_inter3;
392        Parameter func_inter4;
393        Parameter func_inter5;
394        Parameter func_inter6;
395        Parameter func_inter7;
396        Parameter func_inter8;
397        Parameter func_inter9;
398        Parameter func_inter10;
399
400        Parameter sldIM_flat1;
401        Parameter sldIM_flat2;
402        Parameter sldIM_flat3;
403        Parameter sldIM_flat4;
404        Parameter sldIM_flat5;
405        Parameter sldIM_flat6;
406        Parameter sldIM_flat7;
407        Parameter sldIM_flat8;
408        Parameter sldIM_flat9;
409        Parameter sldIM_flat10;
410
411        Parameter nu_inter1;
412        Parameter nu_inter2;
413        Parameter nu_inter3;
414        Parameter nu_inter4;
415        Parameter nu_inter5;
416        Parameter nu_inter6;
417        Parameter nu_inter7;
418        Parameter nu_inter8;
419        Parameter nu_inter9;
420        Parameter nu_inter10;
421
422        Parameter sldIM_sub0;
423        Parameter sldIM_medium;
424        Parameter npts_inter;
425        Parameter nu_inter0;
426
427        // Constructor
428        ReflAdvModel();
429
430        // Operators to get I(Q)
431        double operator()(double q);
432        double operator()(double qx, double qy);
433        double calculate_ER();
434        double evaluate_rphi(double q, double phi);
435};
436
437
438class SphereModel{
439public:
440        // Model parameters
441        Parameter radius;
442        Parameter scale;
443        Parameter sldSph;
444        Parameter sldSolv;
445        Parameter background;
446
447        // Constructor
448        SphereModel();
449
450        // Operators to get I(Q)
451        double operator()(double q);
452        double operator()(double qx, double qy);
453        double calculate_ER();
454        double evaluate_rphi(double q, double phi);
455};
456
457
458class SphereSLDModel{
459public:
460        // Model parameters
461        Parameter n_shells;
462        Parameter scale;
463        Parameter thick_inter0;
464        Parameter func_inter0;
465        Parameter sld_core0;
466        Parameter sld_solv;
467        Parameter background;
468
469        Parameter sld_flat1;
470        Parameter sld_flat2;
471        Parameter sld_flat3;
472        Parameter sld_flat4;
473        Parameter sld_flat5;
474        Parameter sld_flat6;
475        Parameter sld_flat7;
476        Parameter sld_flat8;
477        Parameter sld_flat9;
478        Parameter sld_flat10;
479
480        Parameter thick_inter1;
481        Parameter thick_inter2;
482        Parameter thick_inter3;
483        Parameter thick_inter4;
484        Parameter thick_inter5;
485        Parameter thick_inter6;
486        Parameter thick_inter7;
487        Parameter thick_inter8;
488        Parameter thick_inter9;
489        Parameter thick_inter10;
490
491        Parameter thick_flat1;
492        Parameter thick_flat2;
493        Parameter thick_flat3;
494        Parameter thick_flat4;
495        Parameter thick_flat5;
496        Parameter thick_flat6;
497        Parameter thick_flat7;
498        Parameter thick_flat8;
499        Parameter thick_flat9;
500        Parameter thick_flat10;
501
502        Parameter func_inter1;
503        Parameter func_inter2;
504        Parameter func_inter3;
505        Parameter func_inter4;
506        Parameter func_inter5;
507        Parameter func_inter6;
508        Parameter func_inter7;
509        Parameter func_inter8;
510        Parameter func_inter9;
511        Parameter func_inter10;
512
513        Parameter nu_inter1;
514        Parameter nu_inter2;
515        Parameter nu_inter3;
516        Parameter nu_inter4;
517        Parameter nu_inter5;
518        Parameter nu_inter6;
519        Parameter nu_inter7;
520        Parameter nu_inter8;
521        Parameter nu_inter9;
522        Parameter nu_inter10;
523
524        Parameter npts_inter;
525        Parameter nu_inter0;
526        Parameter rad_core0;
527
528        // Constructor
529        SphereSLDModel();
530
531        // Operators to get I(Q)
532        double operator()(double q);
533        double operator()(double qx, double qy);
534        double calculate_ER();
535        double evaluate_rphi(double q, double phi);
536};
537
538
539class SCCrystalModel{
540public:
541        // Model parameters
542        Parameter scale;
543        Parameter dnn;
544        Parameter d_factor;
545        Parameter radius;
546        Parameter sldSph;
547        Parameter sldSolv;
548        Parameter background;
549        Parameter theta;
550        Parameter phi;
551        Parameter psi;
552
553        // Constructor
554        SCCrystalModel();
555
556        // Operators to get I(Q)
557        double operator()(double q);
558        double operator()(double qx, double qy);
559        double calculate_ER();
560        double evaluate_rphi(double q, double phi);
561};
562
563
564class FCCrystalModel{
565public:
566        // Model parameters
567        Parameter scale;
568        Parameter dnn;
569        Parameter d_factor;
570        Parameter radius;
571        Parameter sldSph;
572        Parameter sldSolv;
573        Parameter background;
574        Parameter theta;
575        Parameter phi;
576        Parameter psi;
577
578        // Constructor
579        FCCrystalModel();
580
581        // Operators to get I(Q)
582        double operator()(double q);
583        double operator()(double qx, double qy);
584        double calculate_ER();
585        double evaluate_rphi(double q, double phi);
586};
587
588
589class BCCrystalModel{
590public:
591        // Model parameters
592        Parameter scale;
593        Parameter dnn;
594        Parameter d_factor;
595        Parameter radius;
596        Parameter sldSph;
597        Parameter sldSolv;
598        Parameter background;
599        Parameter theta;
600        Parameter phi;
601        Parameter psi;
602
603        // Constructor
604        BCCrystalModel();
605
606        // Operators to get I(Q)
607        double operator()(double q);
608        double operator()(double qx, double qy);
609        double calculate_ER();
610        double evaluate_rphi(double q, double phi);
611};
612
613
614class FuzzySphereModel{
615public:
616        // Model parameters
617        Parameter radius;
618        Parameter scale;
619        Parameter fuzziness;
620        Parameter sldSph;
621        Parameter sldSolv;
622        Parameter background;
623
624        // Constructor
625        FuzzySphereModel();
626
627        // Operators to get I(Q)
628        double operator()(double q);
629        double operator()(double qx, double qy);
630        double calculate_ER();
631        double evaluate_rphi(double q, double phi);
632};
633
634class HardsphereStructure{
635public:
636        // Model parameters
637        Parameter effect_radius;
638        Parameter volfraction;
639
640        // Constructor
641        HardsphereStructure();
642
643        // Operators to get I(Q)
644        double operator()(double q);
645        double operator()(double qx, double qy);
646        double calculate_ER();
647        double evaluate_rphi(double q, double phi);
648};
649
650class StickyHSStructure{
651public:
652        // Model parameters
653        Parameter effect_radius;
654        Parameter volfraction;
655        Parameter perturb;
656        Parameter stickiness;
657
658        // Constructor
659        StickyHSStructure();
660
661        // Operators to get I(Q)
662        double operator()(double q);
663        double operator()(double qx, double qy);
664        double calculate_ER();
665        double evaluate_rphi(double q, double phi);
666};
667
668class SquareWellStructure{
669public:
670        // Model parameters
671        Parameter effect_radius;
672        Parameter volfraction;
673        Parameter welldepth;
674        Parameter wellwidth;
675
676        // Constructor
677        SquareWellStructure();
678
679        // Operators to get I(Q)
680        double operator()(double q);
681        double operator()(double qx, double qy);
682        double calculate_ER();
683        double evaluate_rphi(double q, double phi);
684};
685
686class HayterMSAStructure{
687public:
688        // Model parameters
689        Parameter effect_radius;
690        Parameter charge;
691        Parameter volfraction;
692        Parameter temperature;
693        Parameter saltconc;
694        Parameter dielectconst;
695
696        // Constructor
697        HayterMSAStructure();
698
699        // Operators to get I(Q)
700        double operator()(double q);
701        double operator()(double qx, double qy);
702        double calculate_ER();
703        double evaluate_rphi(double q, double phi);
704};
705
706class DiamEllipFunc{
707public:
708        // Model parameters
709        Parameter radius_a;
710        Parameter radius_b;
711
712        // Constructor
713        DiamEllipFunc();
714
715        // Operators to get I(Q)
716        double operator()(double q);
717        double operator()(double qx, double qy);
718        double calculate_ER();
719        double evaluate_rphi(double q, double phi);
720};
721
722class DiamCylFunc{
723public:
724        // Model parameters
725        Parameter radius;
726        Parameter length;
727
728        // Constructor
729        DiamCylFunc();
730
731        // Operators to get I(Q)
732        double operator()(double q);
733        double operator()(double qx, double qy);
734        double calculate_ER();
735        double evaluate_rphi(double q, double phi);
736};
737
738
739class SLDCalFunc{
740public:
741        // Model parameters
742        Parameter fun_type;
743        Parameter npts_inter;
744        Parameter shell_num;
745        Parameter nu_inter;
746        Parameter sld_left;
747        Parameter sld_right;
748
749        // Constructor
750        SLDCalFunc();
751
752        // Operators to get SLD
753        double operator()(double q);
754        double operator()(double qx, double qy);
755        double calculate_ER();
756        double evaluate_rphi(double q, double phi);
757};
758
759
760class CoreShellModel{
761public:
762        // Model parameters
763        Parameter radius;
764        Parameter scale;
765        Parameter thickness;
766        Parameter core_sld;
767        Parameter shell_sld;
768        Parameter solvent_sld;
769        Parameter background;
770
771        // Constructor
772        CoreShellModel();
773
774        // Operators to get I(Q)
775        double operator()(double q);
776        double operator()(double qx, double qy);
777        double calculate_ER();
778        double evaluate_rphi(double q, double phi);
779};
780
781class CoreFourShellModel{
782public:
783        // Model parameters
784        Parameter scale;
785        Parameter rad_core0;
786        Parameter sld_core0;
787        Parameter thick_shell1;
788        Parameter sld_shell1;
789        Parameter thick_shell2;
790        Parameter sld_shell2;
791        Parameter thick_shell3;
792        Parameter sld_shell3;
793        Parameter thick_shell4;
794        Parameter sld_shell4;
795        Parameter sld_solv;
796        Parameter background;
797
798        // Constructor
799        CoreFourShellModel();
800
801        // Operators to get I(Q)
802        double operator()(double q);
803        double operator()(double qx, double qy);
804        double calculate_ER();
805        double evaluate_rphi(double q, double phi);
806};
807
808class CoreShellCylinderModel{
809public:
810        // Model parameters
811        Parameter radius;
812        Parameter scale;
813        Parameter thickness;
814        Parameter length;
815        Parameter core_sld;
816        Parameter shell_sld;
817        Parameter solvent_sld;
818        Parameter background;
819        Parameter axis_theta;
820        Parameter axis_phi;
821
822        // Constructor
823        CoreShellCylinderModel();
824
825        // Operators to get I(Q)
826        double operator()(double q);
827        double operator()(double qx, double qy);
828        double calculate_ER();
829        double evaluate_rphi(double q, double phi);
830};
831
832class EllipsoidModel{
833public:
834        // Model parameters
835        Parameter radius_a;
836        Parameter scale;
837        Parameter radius_b;
838        Parameter sldEll;
839        Parameter sldSolv;
840        Parameter background;
841        Parameter axis_theta;
842        Parameter axis_phi;
843
844        // Constructor
845        EllipsoidModel();
846
847        // Operators to get I(Q)
848        double operator()(double q);
849        double operator()(double qx, double qy);
850        double calculate_ER();
851        double evaluate_rphi(double q, double phi);
852};
853
854class EllipticalCylinderModel{
855public:
856        // Model parameters
857        Parameter r_minor;
858        Parameter scale;
859        Parameter r_ratio;
860        Parameter length;
861        Parameter sldCyl;
862        Parameter sldSolv;
863        Parameter background;
864        Parameter cyl_theta;
865        Parameter cyl_phi;
866        Parameter cyl_psi;
867
868        // Constructor
869        EllipticalCylinderModel();
870
871        // Operators to get I(Q)
872        double operator()(double q);
873        double operator()(double qx, double qy);
874        double calculate_ER();
875        double evaluate_rphi(double q, double phi);
876};
877class TriaxialEllipsoidModel{
878public:
879        // Model parameters
880        Parameter scale;
881        Parameter semi_axisA;
882        Parameter semi_axisB;
883        Parameter semi_axisC;
884        Parameter sldEll;
885        Parameter sldSolv;
886        Parameter background;
887        Parameter axis_theta;
888        Parameter axis_phi;
889        Parameter axis_psi;
890
891        // Constructor
892        TriaxialEllipsoidModel();
893
894        // Operators to get I(Q)
895        double operator()(double q);
896        double operator()(double qx, double qy);
897        double calculate_ER();
898        double evaluate_rphi(double q, double phi);
899};
900
901class FlexibleCylinderModel{
902public:
903        // Model parameters
904        Parameter scale;
905        Parameter length;
906        Parameter kuhn_length;
907        Parameter radius;
908        Parameter sldCyl;
909        Parameter sldSolv;
910        Parameter background;
911
912        // Constructor
913        FlexibleCylinderModel();
914
915        // Operators to get I(Q)
916        double operator()(double q);
917        double operator()(double qx, double qy);
918        double calculate_ER();
919        double evaluate_rphi(double q, double phi);
920};
921
922class FlexCylEllipXModel{
923public:
924        // Model parameters
925        Parameter scale;
926        Parameter length;
927        Parameter kuhn_length;
928        Parameter radius;
929        Parameter axis_ratio;
930        Parameter sldCyl;
931        Parameter sldSolv;
932        Parameter background;
933
934        // Constructor
935        FlexCylEllipXModel();
936
937        // Operators to get I(Q)
938        double operator()(double q);
939        double operator()(double qx, double qy);
940        double calculate_ER();
941        double evaluate_rphi(double q, double phi);
942};
943
944class StackedDisksModel{
945public:
946        // Model parameters
947        Parameter scale;
948        Parameter core_thick;
949        Parameter radius;
950        Parameter layer_thick;
951        Parameter core_sld;
952        Parameter layer_sld;
953        Parameter solvent_sld;
954        Parameter n_stacking;
955        Parameter sigma_d;
956        Parameter background;
957        Parameter axis_theta;
958        Parameter axis_phi;
959
960        // Constructor
961        StackedDisksModel();
962
963        // Operators to get I(Q)
964        double operator()(double q);
965        double operator()(double qx, double qy);
966        double calculate_ER();
967        double evaluate_rphi(double q, double phi);
968};
969
970class LamellarModel{
971public:
972        // Model parameters
973        Parameter scale;
974        Parameter bi_thick;
975        Parameter sld_bi;
976        Parameter sld_sol;
977        Parameter background;
978
979        // Constructor
980        LamellarModel();
981
982        // Operators to get I(Q)
983        double operator()(double q);
984        double operator()(double qx, double qy);
985        double calculate_ER();
986        double evaluate_rphi(double q, double phi);
987
988};
989
990class LamellarFFHGModel{
991public:
992        // Model parameters
993        Parameter scale;
994        Parameter t_length;
995        Parameter h_thickness;
996        Parameter sld_tail;
997        Parameter sld_head;
998        Parameter sld_solvent;
999        Parameter background;
1000
1001        // Constructor
1002        LamellarFFHGModel();
1003
1004        // Operators to get I(Q)
1005        double operator()(double q);
1006        double operator()(double qx, double qy);
1007        double calculate_ER();
1008        double evaluate_rphi(double q, double phi);
1009
1010};
1011
1012
1013
1014class LamellarPSModel{
1015public:
1016        // Model parameters
1017        Parameter scale;
1018        Parameter spacing;
1019        Parameter delta;
1020        Parameter sld_bi;
1021        Parameter sld_sol;
1022        Parameter n_plates;
1023        Parameter caille;
1024        Parameter background;
1025
1026        // Constructor
1027        LamellarPSModel();
1028
1029        // Operators to get I(Q)
1030        double operator()(double q);
1031        double operator()(double qx, double qy);
1032        double calculate_ER();
1033        double evaluate_rphi(double q, double phi);
1034};
1035
1036class LamellarPSHGModel{
1037public:
1038        // Model parameters
1039        Parameter scale;
1040        Parameter spacing;
1041        Parameter deltaT;
1042        Parameter deltaH;
1043        Parameter sld_tail;
1044        Parameter sld_head;
1045        Parameter sld_solvent;
1046        Parameter n_plates;
1047        Parameter caille;
1048        Parameter background;
1049
1050        // Constructor
1051        LamellarPSHGModel();
1052
1053        // Operators to get I(Q)
1054        double operator()(double q);
1055        double operator()(double qx, double qy);
1056        double calculate_ER();
1057        double evaluate_rphi(double q, double phi);
1058};
1059
1060
1061class LamellarPCrystalModel{
1062public:
1063        // Model parameters
1064        Parameter scale;
1065        Parameter thickness;
1066        Parameter Nlayers;
1067        Parameter spacing;
1068        Parameter pd_spacing;
1069        Parameter sld_layer;
1070        Parameter sld_solvent;
1071        Parameter background;
1072
1073        // Constructor
1074        LamellarPCrystalModel();
1075
1076        // Operators to get I(Q)
1077        double operator()(double q);
1078        double operator()(double qx, double qy);
1079        double calculate_ER();
1080        double evaluate_rphi(double q, double phi);
1081};
1082
1083class CoreShellEllipsoidModel{
1084public:
1085        // Model parameters
1086        Parameter scale;
1087        Parameter equat_core;
1088        Parameter polar_core;
1089        Parameter equat_shell;
1090        Parameter polar_shell;
1091        Parameter sld_core;
1092        Parameter sld_shell;
1093        Parameter sld_solvent;
1094        Parameter background;
1095        Parameter axis_theta;
1096        Parameter axis_phi;
1097
1098        // Constructor
1099        CoreShellEllipsoidModel();
1100
1101        // Operators to get I(Q)
1102        double operator()(double q);
1103        double operator()(double qx, double qy);
1104        double calculate_ER();
1105        double evaluate_rphi(double q, double phi);
1106};
1107
1108class HollowCylinderModel{
1109public:
1110        // Model parameters
1111        Parameter scale;
1112        Parameter core_radius;
1113        Parameter radius;
1114        Parameter length;
1115        Parameter sldCyl;
1116        Parameter sldSolv;
1117        Parameter background;
1118        Parameter axis_theta;
1119        Parameter axis_phi;
1120
1121        //Constructor
1122        HollowCylinderModel();
1123
1124        //Operators to get I(Q)
1125        double operator()(double q);
1126        double operator()(double qx , double qy);
1127        double calculate_ER();
1128        double evaluate_rphi(double q, double phi);
1129};
1130
1131class MultiShellModel{
1132public:
1133        // Model parameters
1134        Parameter scale;
1135        Parameter core_radius;
1136        Parameter s_thickness;
1137        Parameter w_thickness;
1138        Parameter core_sld;
1139        Parameter shell_sld;
1140        Parameter n_pairs;
1141        Parameter background;
1142
1143        //Constructor
1144        MultiShellModel();
1145
1146        //Operators to get I(Q)
1147        double operator()(double q);
1148        double operator()(double qx , double qy);
1149        double calculate_ER();
1150        double evaluate_rphi(double q, double phi);
1151};
1152
1153class VesicleModel{
1154public:
1155        // Model parameters
1156        Parameter scale;
1157        Parameter radius;
1158        Parameter thickness;
1159        Parameter core_sld;
1160        Parameter shell_sld;
1161        Parameter background;
1162
1163        //Constructor
1164        VesicleModel();
1165
1166        //Operators to get I(Q)
1167        double operator()(double q);
1168        double operator()(double qx , double qy);
1169        double calculate_ER();
1170        double evaluate_rphi(double q, double phi);
1171};
1172
1173class BinaryHSModel{
1174public:
1175        // Model parameters
1176        Parameter l_radius;
1177        Parameter s_radius;
1178        Parameter vol_frac_ls;
1179        Parameter vol_frac_ss;
1180        Parameter ls_sld;
1181        Parameter ss_sld;
1182        Parameter solvent_sld;
1183        Parameter background;
1184
1185        //Constructor
1186        BinaryHSModel();
1187
1188        //Operators to get I(Q)
1189        double operator()(double q);
1190        double operator()(double qx , double qy);
1191        double calculate_ER();
1192        double evaluate_rphi(double q, double phi);
1193};
1194
1195class BinaryHSPSF11Model{
1196public:
1197        // Model parameters
1198        Parameter l_radius;
1199        Parameter s_radius;
1200        Parameter vol_frac_ls;
1201        Parameter vol_frac_ss;
1202        Parameter ls_sld;
1203        Parameter ss_sld;
1204        Parameter solvent_sld;
1205        Parameter background;
1206
1207        //Constructor
1208        BinaryHSPSF11Model();
1209
1210        //Operators to get I(Q)
1211        double operator()(double q);
1212        double operator()(double qx , double qy);
1213        double calculate_ER();
1214        double evaluate_rphi(double q, double phi);
1215};
1216
1217class Poly_GaussCoil{
1218public:
1219        // Model parameters
1220        Parameter rg;
1221        Parameter scale;
1222        Parameter poly_m;
1223        Parameter background;
1224
1225        // Constructor
1226        Poly_GaussCoil();
1227
1228        // Operators to get I(Q)
1229        double operator()(double q);
1230        double operator()(double qx, double qy);
1231        double calculate_ER();
1232        double evaluate_rphi(double q, double phi);
1233};
1234
1235class FractalModel{
1236public:
1237        // Model parameters
1238        Parameter radius;
1239        Parameter scale;
1240        Parameter fractal_dim;
1241        Parameter cor_length;
1242        Parameter sldBlock;
1243        Parameter sldSolv;
1244        Parameter background;
1245
1246        // Constructor
1247        FractalModel();
1248
1249        // Operators to get I(Q)
1250        double operator()(double q);
1251        double operator()(double qx, double qy);
1252        double calculate_ER();
1253        double evaluate_rphi(double q, double phi);
1254};
1255
1256#endif
Note: See TracBrowser for help on using the repository browser.