source: sasview/sansmodels/src/c_models/models.hh @ f425805

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

C refactor on BarBell?

  • Property mode set to 100644
File size: 25.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 CappedCylinderModel{
52public:
53        // Model parameters
54        Parameter scale;
55        Parameter rad_cyl;
56        Parameter len_cyl;
57        Parameter rad_cap;
58        Parameter sld_capcyl;
59        Parameter sld_solv;
60        Parameter background;
61        Parameter theta;
62        Parameter phi;
63
64        // Constructor
65        CappedCylinderModel();
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
74
75class ParallelepipedModel{
76public:
77        // Model parameters
78        Parameter scale;
79        Parameter short_a;
80        Parameter short_b;
81        Parameter long_c;
82        Parameter sldPipe;
83        Parameter sldSolv;
84        Parameter background;
85        Parameter parallel_theta;
86        Parameter parallel_phi;
87        Parameter parallel_psi;
88
89        // Constructor
90        ParallelepipedModel();
91
92        // Operators to get I(Q)
93        double operator()(double q);
94        double operator()(double qx, double qy);
95        double calculate_ER();
96        double evaluate_rphi(double q, double phi);
97};
98
99
100class CSParallelepipedModel{
101public:
102        // Model parameters
103        Parameter scale;
104        Parameter shortA;
105        Parameter midB;
106        Parameter longC;
107        Parameter rimA;
108        Parameter rimB;
109        Parameter rimC;
110        Parameter sld_rimA;
111        Parameter sld_rimB;
112        Parameter sld_rimC;
113        Parameter sld_pcore;
114        Parameter sld_solv;
115        Parameter background;
116        Parameter parallel_theta;
117        Parameter parallel_phi;
118        Parameter parallel_psi;
119
120        // Constructor
121        CSParallelepipedModel();
122
123        // Operators to get I(Q)
124        double operator()(double q);
125        double operator()(double qx, double qy);
126        double calculate_ER();
127        double evaluate_rphi(double q, double phi);
128};
129
130class OnionModel{
131public:
132        // Model parameters
133        Parameter n_shells;
134        Parameter scale;
135        Parameter rad_core0;
136        Parameter sld_core0;
137        Parameter sld_solv;
138        Parameter background;
139
140        Parameter sld_out_shell1;
141        Parameter sld_out_shell2;
142        Parameter sld_out_shell3;
143        Parameter sld_out_shell4;
144        Parameter sld_out_shell5;
145        Parameter sld_out_shell6;
146        Parameter sld_out_shell7;
147        Parameter sld_out_shell8;
148        Parameter sld_out_shell9;
149        Parameter sld_out_shell10;
150
151        Parameter sld_in_shell1;
152        Parameter sld_in_shell2;
153        Parameter sld_in_shell3;
154        Parameter sld_in_shell4;
155        Parameter sld_in_shell5;
156        Parameter sld_in_shell6;
157        Parameter sld_in_shell7;
158        Parameter sld_in_shell8;
159        Parameter sld_in_shell9;
160        Parameter sld_in_shell10;
161
162        Parameter A_shell1;
163        Parameter A_shell2;
164        Parameter A_shell3;
165        Parameter A_shell4;
166        Parameter A_shell5;
167        Parameter A_shell6;
168        Parameter A_shell7;
169        Parameter A_shell8;
170        Parameter A_shell9;
171        Parameter A_shell10;
172
173        Parameter thick_shell1;
174        Parameter thick_shell2;
175        Parameter thick_shell3;
176        Parameter thick_shell4;
177        Parameter thick_shell5;
178        Parameter thick_shell6;
179        Parameter thick_shell7;
180        Parameter thick_shell8;
181        Parameter thick_shell9;
182        Parameter thick_shell10;
183
184        Parameter func_shell1;
185        Parameter func_shell2;
186        Parameter func_shell3;
187        Parameter func_shell4;
188        Parameter func_shell5;
189        Parameter func_shell6;
190        Parameter func_shell7;
191        Parameter func_shell8;
192        Parameter func_shell9;
193        Parameter func_shell10;
194
195        // Constructor
196        OnionModel();
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
205
206class RPAModel{
207public:
208        // Model parameters
209        Parameter lcase_n;
210        Parameter ba;
211        Parameter bb;
212        Parameter bc;
213        Parameter bd;
214
215        Parameter Kab;
216        Parameter Kac;
217        Parameter Kad;
218        Parameter Kbc;
219        Parameter Kbd;
220        Parameter Kcd;
221
222        Parameter scale;
223        Parameter background;
224
225        Parameter Na;
226        Parameter Phia;
227        Parameter va;
228        Parameter La;
229
230        Parameter Nb;
231        Parameter Phib;
232        Parameter vb;
233        Parameter Lb;
234
235        Parameter Nc;
236        Parameter Phic;
237        Parameter vc;
238        Parameter Lc;
239
240        Parameter Nd;
241        Parameter Phid;
242        Parameter vd;
243        Parameter Ld;
244
245        // Constructor
246        RPAModel();
247
248        // Operators to get I(Q)
249        double operator()(double q);
250        double operator()(double qx, double qy);
251        double calculate_ER();
252        double evaluate_rphi(double q, double phi);
253};
254
255
256class ReflModel{
257public:
258        // Model parameters
259        Parameter n_layers;
260        Parameter scale;
261        Parameter thick_inter0;
262        Parameter func_inter0;
263        Parameter sld_bottom0;
264        Parameter sld_medium;
265        Parameter background;
266
267        Parameter sld_flat1;
268        Parameter sld_flat2;
269        Parameter sld_flat3;
270        Parameter sld_flat4;
271        Parameter sld_flat5;
272        Parameter sld_flat6;
273        Parameter sld_flat7;
274        Parameter sld_flat8;
275        Parameter sld_flat9;
276        Parameter sld_flat10;
277
278        Parameter thick_inter1;
279        Parameter thick_inter2;
280        Parameter thick_inter3;
281        Parameter thick_inter4;
282        Parameter thick_inter5;
283        Parameter thick_inter6;
284        Parameter thick_inter7;
285        Parameter thick_inter8;
286        Parameter thick_inter9;
287        Parameter thick_inter10;
288
289        Parameter thick_flat1;
290        Parameter thick_flat2;
291        Parameter thick_flat3;
292        Parameter thick_flat4;
293        Parameter thick_flat5;
294        Parameter thick_flat6;
295        Parameter thick_flat7;
296        Parameter thick_flat8;
297        Parameter thick_flat9;
298        Parameter thick_flat10;
299
300        Parameter func_inter1;
301        Parameter func_inter2;
302        Parameter func_inter3;
303        Parameter func_inter4;
304        Parameter func_inter5;
305        Parameter func_inter6;
306        Parameter func_inter7;
307        Parameter func_inter8;
308        Parameter func_inter9;
309        Parameter func_inter10;
310
311        // Constructor
312        ReflModel();
313
314        // Operators to get I(Q)
315        double operator()(double q);
316        double operator()(double qx, double qy);
317        double calculate_ER();
318        double evaluate_rphi(double q, double phi);
319};
320
321
322class ReflAdvModel{
323public:
324        // Model parameters
325        Parameter n_layers;
326        Parameter scale;
327        Parameter thick_inter0;
328        Parameter func_inter0;
329        Parameter sld_bottom0;
330        Parameter sld_medium;
331        Parameter background;
332
333        Parameter sld_flat1;
334        Parameter sld_flat2;
335        Parameter sld_flat3;
336        Parameter sld_flat4;
337        Parameter sld_flat5;
338        Parameter sld_flat6;
339        Parameter sld_flat7;
340        Parameter sld_flat8;
341        Parameter sld_flat9;
342        Parameter sld_flat10;
343
344        Parameter thick_inter1;
345        Parameter thick_inter2;
346        Parameter thick_inter3;
347        Parameter thick_inter4;
348        Parameter thick_inter5;
349        Parameter thick_inter6;
350        Parameter thick_inter7;
351        Parameter thick_inter8;
352        Parameter thick_inter9;
353        Parameter thick_inter10;
354
355        Parameter thick_flat1;
356        Parameter thick_flat2;
357        Parameter thick_flat3;
358        Parameter thick_flat4;
359        Parameter thick_flat5;
360        Parameter thick_flat6;
361        Parameter thick_flat7;
362        Parameter thick_flat8;
363        Parameter thick_flat9;
364        Parameter thick_flat10;
365
366        Parameter func_inter1;
367        Parameter func_inter2;
368        Parameter func_inter3;
369        Parameter func_inter4;
370        Parameter func_inter5;
371        Parameter func_inter6;
372        Parameter func_inter7;
373        Parameter func_inter8;
374        Parameter func_inter9;
375        Parameter func_inter10;
376
377        Parameter sldIM_flat1;
378        Parameter sldIM_flat2;
379        Parameter sldIM_flat3;
380        Parameter sldIM_flat4;
381        Parameter sldIM_flat5;
382        Parameter sldIM_flat6;
383        Parameter sldIM_flat7;
384        Parameter sldIM_flat8;
385        Parameter sldIM_flat9;
386        Parameter sldIM_flat10;
387
388        Parameter nu_inter1;
389        Parameter nu_inter2;
390        Parameter nu_inter3;
391        Parameter nu_inter4;
392        Parameter nu_inter5;
393        Parameter nu_inter6;
394        Parameter nu_inter7;
395        Parameter nu_inter8;
396        Parameter nu_inter9;
397        Parameter nu_inter10;
398
399        Parameter sldIM_sub0;
400        Parameter sldIM_medium;
401        Parameter npts_inter;
402        Parameter nu_inter0;
403
404        // Constructor
405        ReflAdvModel();
406
407        // Operators to get I(Q)
408        double operator()(double q);
409        double operator()(double qx, double qy);
410        double calculate_ER();
411        double evaluate_rphi(double q, double phi);
412};
413
414
415class SphereModel{
416public:
417        // Model parameters
418        Parameter radius;
419        Parameter scale;
420        Parameter sldSph;
421        Parameter sldSolv;
422        Parameter background;
423
424        // Constructor
425        SphereModel();
426
427        // Operators to get I(Q)
428        double operator()(double q);
429        double operator()(double qx, double qy);
430        double calculate_ER();
431        double evaluate_rphi(double q, double phi);
432};
433
434
435class SphereSLDModel{
436public:
437        // Model parameters
438        Parameter n_shells;
439        Parameter scale;
440        Parameter thick_inter0;
441        Parameter func_inter0;
442        Parameter sld_core0;
443        Parameter sld_solv;
444        Parameter background;
445
446        Parameter sld_flat1;
447        Parameter sld_flat2;
448        Parameter sld_flat3;
449        Parameter sld_flat4;
450        Parameter sld_flat5;
451        Parameter sld_flat6;
452        Parameter sld_flat7;
453        Parameter sld_flat8;
454        Parameter sld_flat9;
455        Parameter sld_flat10;
456
457        Parameter thick_inter1;
458        Parameter thick_inter2;
459        Parameter thick_inter3;
460        Parameter thick_inter4;
461        Parameter thick_inter5;
462        Parameter thick_inter6;
463        Parameter thick_inter7;
464        Parameter thick_inter8;
465        Parameter thick_inter9;
466        Parameter thick_inter10;
467
468        Parameter thick_flat1;
469        Parameter thick_flat2;
470        Parameter thick_flat3;
471        Parameter thick_flat4;
472        Parameter thick_flat5;
473        Parameter thick_flat6;
474        Parameter thick_flat7;
475        Parameter thick_flat8;
476        Parameter thick_flat9;
477        Parameter thick_flat10;
478
479        Parameter func_inter1;
480        Parameter func_inter2;
481        Parameter func_inter3;
482        Parameter func_inter4;
483        Parameter func_inter5;
484        Parameter func_inter6;
485        Parameter func_inter7;
486        Parameter func_inter8;
487        Parameter func_inter9;
488        Parameter func_inter10;
489
490        Parameter nu_inter1;
491        Parameter nu_inter2;
492        Parameter nu_inter3;
493        Parameter nu_inter4;
494        Parameter nu_inter5;
495        Parameter nu_inter6;
496        Parameter nu_inter7;
497        Parameter nu_inter8;
498        Parameter nu_inter9;
499        Parameter nu_inter10;
500
501        Parameter npts_inter;
502        Parameter nu_inter0;
503        Parameter rad_core0;
504
505        // Constructor
506        SphereSLDModel();
507
508        // Operators to get I(Q)
509        double operator()(double q);
510        double operator()(double qx, double qy);
511        double calculate_ER();
512        double evaluate_rphi(double q, double phi);
513};
514
515
516class SCCrystalModel{
517public:
518        // Model parameters
519        Parameter scale;
520        Parameter dnn;
521        Parameter d_factor;
522        Parameter radius;
523        Parameter sldSph;
524        Parameter sldSolv;
525        Parameter background;
526        Parameter theta;
527        Parameter phi;
528        Parameter psi;
529
530        // Constructor
531        SCCrystalModel();
532
533        // Operators to get I(Q)
534        double operator()(double q);
535        double operator()(double qx, double qy);
536        double calculate_ER();
537        double evaluate_rphi(double q, double phi);
538};
539
540
541class PearlNecklaceModel{
542public:
543        // Model parameters
544        Parameter scale;
545        Parameter radius;
546        Parameter edge_separation;
547        Parameter thick_string;
548        Parameter num_pearls;
549        Parameter sld_pearl;
550        Parameter sld_string;
551        Parameter sld_solv;
552        Parameter background;
553
554        // Constructor
555        PearlNecklaceModel();
556
557        // Operators to get I(Q)
558        double operator()(double q);
559        double operator()(double qx, double qy);
560        double calculate_ER();
561        double evaluate_rphi(double q, double phi);
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.