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

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 00c2141 was 8c8cb05, checked in by Jae Cho <jhjcho@…>, 13 years ago

new model pre.

  • Property mode set to 100644
File size: 25.8 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 PearlNecklaceModel{
565public:
566        // Model parameters
567        Parameter scale;
568        Parameter radius;
569        Parameter edge_separation;
570        Parameter thick_string;
571        Parameter num_pearls;
572        Parameter sld_pearl;
573        Parameter sld_string;
574        Parameter sld_solv;
575        Parameter background;
576
577        // Constructor
578        PearlNecklaceModel();
579
580        // Operators to get I(Q)
581        double operator()(double q);
582        double operator()(double qx, double qy);
583        double calculate_ER();
584        double evaluate_rphi(double q, double phi);
585};
586
587class FCCrystalModel{
588public:
589        // Model parameters
590        Parameter scale;
591        Parameter dnn;
592        Parameter d_factor;
593        Parameter radius;
594        Parameter sldSph;
595        Parameter sldSolv;
596        Parameter background;
597        Parameter theta;
598        Parameter phi;
599        Parameter psi;
600
601        // Constructor
602        FCCrystalModel();
603
604        // Operators to get I(Q)
605        double operator()(double q);
606        double operator()(double qx, double qy);
607        double calculate_ER();
608        double evaluate_rphi(double q, double phi);
609};
610
611
612class BCCrystalModel{
613public:
614        // Model parameters
615        Parameter scale;
616        Parameter dnn;
617        Parameter d_factor;
618        Parameter radius;
619        Parameter sldSph;
620        Parameter sldSolv;
621        Parameter background;
622        Parameter theta;
623        Parameter phi;
624        Parameter psi;
625
626        // Constructor
627        BCCrystalModel();
628
629        // Operators to get I(Q)
630        double operator()(double q);
631        double operator()(double qx, double qy);
632        double calculate_ER();
633        double evaluate_rphi(double q, double phi);
634};
635
636
637class FuzzySphereModel{
638public:
639        // Model parameters
640        Parameter radius;
641        Parameter scale;
642        Parameter fuzziness;
643        Parameter sldSph;
644        Parameter sldSolv;
645        Parameter background;
646
647        // Constructor
648        FuzzySphereModel();
649
650        // Operators to get I(Q)
651        double operator()(double q);
652        double operator()(double qx, double qy);
653        double calculate_ER();
654        double evaluate_rphi(double q, double phi);
655};
656
657class HardsphereStructure{
658public:
659        // Model parameters
660        Parameter effect_radius;
661        Parameter volfraction;
662
663        // Constructor
664        HardsphereStructure();
665
666        // Operators to get I(Q)
667        double operator()(double q);
668        double operator()(double qx, double qy);
669        double calculate_ER();
670        double evaluate_rphi(double q, double phi);
671};
672
673class StickyHSStructure{
674public:
675        // Model parameters
676        Parameter effect_radius;
677        Parameter volfraction;
678        Parameter perturb;
679        Parameter stickiness;
680
681        // Constructor
682        StickyHSStructure();
683
684        // Operators to get I(Q)
685        double operator()(double q);
686        double operator()(double qx, double qy);
687        double calculate_ER();
688        double evaluate_rphi(double q, double phi);
689};
690
691class SquareWellStructure{
692public:
693        // Model parameters
694        Parameter effect_radius;
695        Parameter volfraction;
696        Parameter welldepth;
697        Parameter wellwidth;
698
699        // Constructor
700        SquareWellStructure();
701
702        // Operators to get I(Q)
703        double operator()(double q);
704        double operator()(double qx, double qy);
705        double calculate_ER();
706        double evaluate_rphi(double q, double phi);
707};
708
709class HayterMSAStructure{
710public:
711        // Model parameters
712        Parameter effect_radius;
713        Parameter charge;
714        Parameter volfraction;
715        Parameter temperature;
716        Parameter saltconc;
717        Parameter dielectconst;
718
719        // Constructor
720        HayterMSAStructure();
721
722        // Operators to get I(Q)
723        double operator()(double q);
724        double operator()(double qx, double qy);
725        double calculate_ER();
726        double evaluate_rphi(double q, double phi);
727};
728
729class DiamEllipFunc{
730public:
731        // Model parameters
732        Parameter radius_a;
733        Parameter radius_b;
734
735        // Constructor
736        DiamEllipFunc();
737
738        // Operators to get I(Q)
739        double operator()(double q);
740        double operator()(double qx, double qy);
741        double calculate_ER();
742        double evaluate_rphi(double q, double phi);
743};
744
745class DiamCylFunc{
746public:
747        // Model parameters
748        Parameter radius;
749        Parameter length;
750
751        // Constructor
752        DiamCylFunc();
753
754        // Operators to get I(Q)
755        double operator()(double q);
756        double operator()(double qx, double qy);
757        double calculate_ER();
758        double evaluate_rphi(double q, double phi);
759};
760
761
762class SLDCalFunc{
763public:
764        // Model parameters
765        Parameter fun_type;
766        Parameter npts_inter;
767        Parameter shell_num;
768        Parameter nu_inter;
769        Parameter sld_left;
770        Parameter sld_right;
771
772        // Constructor
773        SLDCalFunc();
774
775        // Operators to get SLD
776        double operator()(double q);
777        double operator()(double qx, double qy);
778        double calculate_ER();
779        double evaluate_rphi(double q, double phi);
780};
781
782
783class CoreShellModel{
784public:
785        // Model parameters
786        Parameter radius;
787        Parameter scale;
788        Parameter thickness;
789        Parameter core_sld;
790        Parameter shell_sld;
791        Parameter solvent_sld;
792        Parameter background;
793
794        // Constructor
795        CoreShellModel();
796
797        // Operators to get I(Q)
798        double operator()(double q);
799        double operator()(double qx, double qy);
800        double calculate_ER();
801        double evaluate_rphi(double q, double phi);
802};
803
804class CoreFourShellModel{
805public:
806        // Model parameters
807        Parameter scale;
808        Parameter rad_core0;
809        Parameter sld_core0;
810        Parameter thick_shell1;
811        Parameter sld_shell1;
812        Parameter thick_shell2;
813        Parameter sld_shell2;
814        Parameter thick_shell3;
815        Parameter sld_shell3;
816        Parameter thick_shell4;
817        Parameter sld_shell4;
818        Parameter sld_solv;
819        Parameter background;
820
821        // Constructor
822        CoreFourShellModel();
823
824        // Operators to get I(Q)
825        double operator()(double q);
826        double operator()(double qx, double qy);
827        double calculate_ER();
828        double evaluate_rphi(double q, double phi);
829};
830
831class CoreShellCylinderModel{
832public:
833        // Model parameters
834        Parameter radius;
835        Parameter scale;
836        Parameter thickness;
837        Parameter length;
838        Parameter core_sld;
839        Parameter shell_sld;
840        Parameter solvent_sld;
841        Parameter background;
842        Parameter axis_theta;
843        Parameter axis_phi;
844
845        // Constructor
846        CoreShellCylinderModel();
847
848        // Operators to get I(Q)
849        double operator()(double q);
850        double operator()(double qx, double qy);
851        double calculate_ER();
852        double evaluate_rphi(double q, double phi);
853};
854
855class EllipsoidModel{
856public:
857        // Model parameters
858        Parameter radius_a;
859        Parameter scale;
860        Parameter radius_b;
861        Parameter sldEll;
862        Parameter sldSolv;
863        Parameter background;
864        Parameter axis_theta;
865        Parameter axis_phi;
866
867        // Constructor
868        EllipsoidModel();
869
870        // Operators to get I(Q)
871        double operator()(double q);
872        double operator()(double qx, double qy);
873        double calculate_ER();
874        double evaluate_rphi(double q, double phi);
875};
876
877class EllipticalCylinderModel{
878public:
879        // Model parameters
880        Parameter r_minor;
881        Parameter scale;
882        Parameter r_ratio;
883        Parameter length;
884        Parameter sldCyl;
885        Parameter sldSolv;
886        Parameter background;
887        Parameter cyl_theta;
888        Parameter cyl_phi;
889        Parameter cyl_psi;
890
891        // Constructor
892        EllipticalCylinderModel();
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};
900class TriaxialEllipsoidModel{
901public:
902        // Model parameters
903        Parameter scale;
904        Parameter semi_axisA;
905        Parameter semi_axisB;
906        Parameter semi_axisC;
907        Parameter sldEll;
908        Parameter sldSolv;
909        Parameter background;
910        Parameter axis_theta;
911        Parameter axis_phi;
912        Parameter axis_psi;
913
914        // Constructor
915        TriaxialEllipsoidModel();
916
917        // Operators to get I(Q)
918        double operator()(double q);
919        double operator()(double qx, double qy);
920        double calculate_ER();
921        double evaluate_rphi(double q, double phi);
922};
923
924class FlexibleCylinderModel{
925public:
926        // Model parameters
927        Parameter scale;
928        Parameter length;
929        Parameter kuhn_length;
930        Parameter radius;
931        Parameter sldCyl;
932        Parameter sldSolv;
933        Parameter background;
934
935        // Constructor
936        FlexibleCylinderModel();
937
938        // Operators to get I(Q)
939        double operator()(double q);
940        double operator()(double qx, double qy);
941        double calculate_ER();
942        double evaluate_rphi(double q, double phi);
943};
944
945class FlexCylEllipXModel{
946public:
947        // Model parameters
948        Parameter scale;
949        Parameter length;
950        Parameter kuhn_length;
951        Parameter radius;
952        Parameter axis_ratio;
953        Parameter sldCyl;
954        Parameter sldSolv;
955        Parameter background;
956
957        // Constructor
958        FlexCylEllipXModel();
959
960        // Operators to get I(Q)
961        double operator()(double q);
962        double operator()(double qx, double qy);
963        double calculate_ER();
964        double evaluate_rphi(double q, double phi);
965};
966
967class StackedDisksModel{
968public:
969        // Model parameters
970        Parameter scale;
971        Parameter core_thick;
972        Parameter radius;
973        Parameter layer_thick;
974        Parameter core_sld;
975        Parameter layer_sld;
976        Parameter solvent_sld;
977        Parameter n_stacking;
978        Parameter sigma_d;
979        Parameter background;
980        Parameter axis_theta;
981        Parameter axis_phi;
982
983        // Constructor
984        StackedDisksModel();
985
986        // Operators to get I(Q)
987        double operator()(double q);
988        double operator()(double qx, double qy);
989        double calculate_ER();
990        double evaluate_rphi(double q, double phi);
991};
992
993class LamellarModel{
994public:
995        // Model parameters
996        Parameter scale;
997        Parameter bi_thick;
998        Parameter sld_bi;
999        Parameter sld_sol;
1000        Parameter background;
1001
1002        // Constructor
1003        LamellarModel();
1004
1005        // Operators to get I(Q)
1006        double operator()(double q);
1007        double operator()(double qx, double qy);
1008        double calculate_ER();
1009        double evaluate_rphi(double q, double phi);
1010
1011};
1012
1013class LamellarFFHGModel{
1014public:
1015        // Model parameters
1016        Parameter scale;
1017        Parameter t_length;
1018        Parameter h_thickness;
1019        Parameter sld_tail;
1020        Parameter sld_head;
1021        Parameter sld_solvent;
1022        Parameter background;
1023
1024        // Constructor
1025        LamellarFFHGModel();
1026
1027        // Operators to get I(Q)
1028        double operator()(double q);
1029        double operator()(double qx, double qy);
1030        double calculate_ER();
1031        double evaluate_rphi(double q, double phi);
1032
1033};
1034
1035
1036
1037class LamellarPSModel{
1038public:
1039        // Model parameters
1040        Parameter scale;
1041        Parameter spacing;
1042        Parameter delta;
1043        Parameter sld_bi;
1044        Parameter sld_sol;
1045        Parameter n_plates;
1046        Parameter caille;
1047        Parameter background;
1048
1049        // Constructor
1050        LamellarPSModel();
1051
1052        // Operators to get I(Q)
1053        double operator()(double q);
1054        double operator()(double qx, double qy);
1055        double calculate_ER();
1056        double evaluate_rphi(double q, double phi);
1057};
1058
1059class LamellarPSHGModel{
1060public:
1061        // Model parameters
1062        Parameter scale;
1063        Parameter spacing;
1064        Parameter deltaT;
1065        Parameter deltaH;
1066        Parameter sld_tail;
1067        Parameter sld_head;
1068        Parameter sld_solvent;
1069        Parameter n_plates;
1070        Parameter caille;
1071        Parameter background;
1072
1073        // Constructor
1074        LamellarPSHGModel();
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
1083
1084class LamellarPCrystalModel{
1085public:
1086        // Model parameters
1087        Parameter scale;
1088        Parameter thickness;
1089        Parameter Nlayers;
1090        Parameter spacing;
1091        Parameter pd_spacing;
1092        Parameter sld_layer;
1093        Parameter sld_solvent;
1094        Parameter background;
1095
1096        // Constructor
1097        LamellarPCrystalModel();
1098
1099        // Operators to get I(Q)
1100        double operator()(double q);
1101        double operator()(double qx, double qy);
1102        double calculate_ER();
1103        double evaluate_rphi(double q, double phi);
1104};
1105
1106class CoreShellEllipsoidModel{
1107public:
1108        // Model parameters
1109        Parameter scale;
1110        Parameter equat_core;
1111        Parameter polar_core;
1112        Parameter equat_shell;
1113        Parameter polar_shell;
1114        Parameter sld_core;
1115        Parameter sld_shell;
1116        Parameter sld_solvent;
1117        Parameter background;
1118        Parameter axis_theta;
1119        Parameter axis_phi;
1120
1121        // Constructor
1122        CoreShellEllipsoidModel();
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 HollowCylinderModel{
1132public:
1133        // Model parameters
1134        Parameter scale;
1135        Parameter core_radius;
1136        Parameter radius;
1137        Parameter length;
1138        Parameter sldCyl;
1139        Parameter sldSolv;
1140        Parameter background;
1141        Parameter axis_theta;
1142        Parameter axis_phi;
1143
1144        //Constructor
1145        HollowCylinderModel();
1146
1147        //Operators to get I(Q)
1148        double operator()(double q);
1149        double operator()(double qx , double qy);
1150        double calculate_ER();
1151        double evaluate_rphi(double q, double phi);
1152};
1153
1154class MultiShellModel{
1155public:
1156        // Model parameters
1157        Parameter scale;
1158        Parameter core_radius;
1159        Parameter s_thickness;
1160        Parameter w_thickness;
1161        Parameter core_sld;
1162        Parameter shell_sld;
1163        Parameter n_pairs;
1164        Parameter background;
1165
1166        //Constructor
1167        MultiShellModel();
1168
1169        //Operators to get I(Q)
1170        double operator()(double q);
1171        double operator()(double qx , double qy);
1172        double calculate_ER();
1173        double evaluate_rphi(double q, double phi);
1174};
1175
1176class VesicleModel{
1177public:
1178        // Model parameters
1179        Parameter scale;
1180        Parameter radius;
1181        Parameter thickness;
1182        Parameter core_sld;
1183        Parameter shell_sld;
1184        Parameter background;
1185
1186        //Constructor
1187        VesicleModel();
1188
1189        //Operators to get I(Q)
1190        double operator()(double q);
1191        double operator()(double qx , double qy);
1192        double calculate_ER();
1193        double evaluate_rphi(double q, double phi);
1194};
1195
1196class BinaryHSModel{
1197public:
1198        // Model parameters
1199        Parameter l_radius;
1200        Parameter s_radius;
1201        Parameter vol_frac_ls;
1202        Parameter vol_frac_ss;
1203        Parameter ls_sld;
1204        Parameter ss_sld;
1205        Parameter solvent_sld;
1206        Parameter background;
1207
1208        //Constructor
1209        BinaryHSModel();
1210
1211        //Operators to get I(Q)
1212        double operator()(double q);
1213        double operator()(double qx , double qy);
1214        double calculate_ER();
1215        double evaluate_rphi(double q, double phi);
1216};
1217
1218class BinaryHSPSF11Model{
1219public:
1220        // Model parameters
1221        Parameter l_radius;
1222        Parameter s_radius;
1223        Parameter vol_frac_ls;
1224        Parameter vol_frac_ss;
1225        Parameter ls_sld;
1226        Parameter ss_sld;
1227        Parameter solvent_sld;
1228        Parameter background;
1229
1230        //Constructor
1231        BinaryHSPSF11Model();
1232
1233        //Operators to get I(Q)
1234        double operator()(double q);
1235        double operator()(double qx , double qy);
1236        double calculate_ER();
1237        double evaluate_rphi(double q, double phi);
1238};
1239
1240class Poly_GaussCoil{
1241public:
1242        // Model parameters
1243        Parameter rg;
1244        Parameter scale;
1245        Parameter poly_m;
1246        Parameter background;
1247
1248        // Constructor
1249        Poly_GaussCoil();
1250
1251        // Operators to get I(Q)
1252        double operator()(double q);
1253        double operator()(double qx, double qy);
1254        double calculate_ER();
1255        double evaluate_rphi(double q, double phi);
1256};
1257
1258class FractalModel{
1259public:
1260        // Model parameters
1261        Parameter radius;
1262        Parameter scale;
1263        Parameter fractal_dim;
1264        Parameter cor_length;
1265        Parameter sldBlock;
1266        Parameter sldSolv;
1267        Parameter background;
1268
1269        // Constructor
1270        FractalModel();
1271
1272        // Operators to get I(Q)
1273        double operator()(double q);
1274        double operator()(double qx, double qy);
1275        double calculate_ER();
1276        double evaluate_rphi(double q, double phi);
1277};
1278
1279#endif
Note: See TracBrowser for help on using the repository browser.