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

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

added models and unit tests

  • Property mode set to 100644
File size: 23.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 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
345
346class SphereModel{
347public:
348        // Model parameters
349        Parameter radius;
350        Parameter scale;
351        Parameter sldSph;
352        Parameter sldSolv;
353        Parameter background;
354
355        // Constructor
356        SphereModel();
357
358        // Operators to get I(Q)
359        double operator()(double q);
360        double operator()(double qx, double qy);
361        double calculate_ER();
362        double evaluate_rphi(double q, double phi);
363};
364
365
366class SphereSLDModel{
367public:
368        // Model parameters
369        Parameter n_shells;
370        Parameter scale;
371        Parameter thick_inter0;
372        Parameter func_inter0;
373        Parameter sld_core0;
374        Parameter sld_solv;
375        Parameter background;
376
377        Parameter sld_flat1;
378        Parameter sld_flat2;
379        Parameter sld_flat3;
380        Parameter sld_flat4;
381        Parameter sld_flat5;
382        Parameter sld_flat6;
383        Parameter sld_flat7;
384        Parameter sld_flat8;
385        Parameter sld_flat9;
386        Parameter sld_flat10;
387
388        Parameter thick_inter1;
389        Parameter thick_inter2;
390        Parameter thick_inter3;
391        Parameter thick_inter4;
392        Parameter thick_inter5;
393        Parameter thick_inter6;
394        Parameter thick_inter7;
395        Parameter thick_inter8;
396        Parameter thick_inter9;
397        Parameter thick_inter10;
398
399        Parameter thick_flat1;
400        Parameter thick_flat2;
401        Parameter thick_flat3;
402        Parameter thick_flat4;
403        Parameter thick_flat5;
404        Parameter thick_flat6;
405        Parameter thick_flat7;
406        Parameter thick_flat8;
407        Parameter thick_flat9;
408        Parameter thick_flat10;
409
410        Parameter func_inter1;
411        Parameter func_inter2;
412        Parameter func_inter3;
413        Parameter func_inter4;
414        Parameter func_inter5;
415        Parameter func_inter6;
416        Parameter func_inter7;
417        Parameter func_inter8;
418        Parameter func_inter9;
419        Parameter func_inter10;
420
421        Parameter nu_inter1;
422        Parameter nu_inter2;
423        Parameter nu_inter3;
424        Parameter nu_inter4;
425        Parameter nu_inter5;
426        Parameter nu_inter6;
427        Parameter nu_inter7;
428        Parameter nu_inter8;
429        Parameter nu_inter9;
430        Parameter nu_inter10;
431
432        Parameter npts_inter;
433        Parameter nu_inter0;
434        Parameter rad_core0;
435
436        // Constructor
437        SphereSLDModel();
438
439        // Operators to get I(Q)
440        double operator()(double q);
441        double operator()(double qx, double qy);
442        double calculate_ER();
443        double evaluate_rphi(double q, double phi);
444};
445
446
447class SCCrystalModel{
448public:
449        // Model parameters
450        Parameter scale;
451        Parameter dnn;
452        Parameter d_factor;
453        Parameter radius;
454        Parameter sldSph;
455        Parameter sldSolv;
456        Parameter background;
457        Parameter theta;
458        Parameter phi;
459        Parameter psi;
460
461        // Constructor
462        SCCrystalModel();
463
464        // Operators to get I(Q)
465        double operator()(double q);
466        double operator()(double qx, double qy);
467        double calculate_ER();
468        double evaluate_rphi(double q, double phi);
469};
470
471
472class FCCrystalModel{
473public:
474        // Model parameters
475        Parameter scale;
476        Parameter dnn;
477        Parameter d_factor;
478        Parameter radius;
479        Parameter sldSph;
480        Parameter sldSolv;
481        Parameter background;
482        Parameter theta;
483        Parameter phi;
484        Parameter psi;
485
486        // Constructor
487        FCCrystalModel();
488
489        // Operators to get I(Q)
490        double operator()(double q);
491        double operator()(double qx, double qy);
492        double calculate_ER();
493        double evaluate_rphi(double q, double phi);
494};
495
496
497class BCCrystalModel{
498public:
499        // Model parameters
500        Parameter scale;
501        Parameter dnn;
502        Parameter d_factor;
503        Parameter radius;
504        Parameter sldSph;
505        Parameter sldSolv;
506        Parameter background;
507        Parameter theta;
508        Parameter phi;
509        Parameter psi;
510
511        // Constructor
512        BCCrystalModel();
513
514        // Operators to get I(Q)
515        double operator()(double q);
516        double operator()(double qx, double qy);
517        double calculate_ER();
518        double evaluate_rphi(double q, double phi);
519};
520
521
522class FuzzySphereModel{
523public:
524        // Model parameters
525        Parameter radius;
526        Parameter scale;
527        Parameter fuzziness;
528        Parameter sldSph;
529        Parameter sldSolv;
530        Parameter background;
531
532        // Constructor
533        FuzzySphereModel();
534
535        // Operators to get I(Q)
536        double operator()(double q);
537        double operator()(double qx, double qy);
538        double calculate_ER();
539        double evaluate_rphi(double q, double phi);
540};
541
542class HardsphereStructure{
543public:
544        // Model parameters
545        Parameter effect_radius;
546        Parameter volfraction;
547
548        // Constructor
549        HardsphereStructure();
550
551        // Operators to get I(Q)
552        double operator()(double q);
553        double operator()(double qx, double qy);
554        double calculate_ER();
555        double evaluate_rphi(double q, double phi);
556};
557
558class StickyHSStructure{
559public:
560        // Model parameters
561        Parameter effect_radius;
562        Parameter volfraction;
563        Parameter perturb;
564        Parameter stickiness;
565
566        // Constructor
567        StickyHSStructure();
568
569        // Operators to get I(Q)
570        double operator()(double q);
571        double operator()(double qx, double qy);
572        double calculate_ER();
573        double evaluate_rphi(double q, double phi);
574};
575
576class SquareWellStructure{
577public:
578        // Model parameters
579        Parameter effect_radius;
580        Parameter volfraction;
581        Parameter welldepth;
582        Parameter wellwidth;
583
584        // Constructor
585        SquareWellStructure();
586
587        // Operators to get I(Q)
588        double operator()(double q);
589        double operator()(double qx, double qy);
590        double calculate_ER();
591        double evaluate_rphi(double q, double phi);
592};
593
594class HayterMSAStructure{
595public:
596        // Model parameters
597        Parameter effect_radius;
598        Parameter charge;
599        Parameter volfraction;
600        Parameter temperature;
601        Parameter saltconc;
602        Parameter dielectconst;
603
604        // Constructor
605        HayterMSAStructure();
606
607        // Operators to get I(Q)
608        double operator()(double q);
609        double operator()(double qx, double qy);
610        double calculate_ER();
611        double evaluate_rphi(double q, double phi);
612};
613
614class DiamEllipFunc{
615public:
616        // Model parameters
617        Parameter radius_a;
618        Parameter radius_b;
619
620        // Constructor
621        DiamEllipFunc();
622
623        // Operators to get I(Q)
624        double operator()(double q);
625        double operator()(double qx, double qy);
626        double calculate_ER();
627        double evaluate_rphi(double q, double phi);
628};
629
630class DiamCylFunc{
631public:
632        // Model parameters
633        Parameter radius;
634        Parameter length;
635
636        // Constructor
637        DiamCylFunc();
638
639        // Operators to get I(Q)
640        double operator()(double q);
641        double operator()(double qx, double qy);
642        double calculate_ER();
643        double evaluate_rphi(double q, double phi);
644};
645
646
647class SLDCalFunc{
648public:
649        // Model parameters
650        Parameter fun_type;
651        Parameter npts_inter;
652        Parameter shell_num;
653        Parameter nu_inter;
654        Parameter sld_left;
655        Parameter sld_right;
656
657        // Constructor
658        SLDCalFunc();
659
660        // Operators to get SLD
661        double operator()(double q);
662        double operator()(double qx, double qy);
663        double calculate_ER();
664        double evaluate_rphi(double q, double phi);
665};
666
667
668class CoreShellModel{
669public:
670        // Model parameters
671        Parameter radius;
672        Parameter scale;
673        Parameter thickness;
674        Parameter core_sld;
675        Parameter shell_sld;
676        Parameter solvent_sld;
677        Parameter background;
678
679        // Constructor
680        CoreShellModel();
681
682        // Operators to get I(Q)
683        double operator()(double q);
684        double operator()(double qx, double qy);
685        double calculate_ER();
686        double evaluate_rphi(double q, double phi);
687};
688
689class CoreFourShellModel{
690public:
691        // Model parameters
692        Parameter scale;
693        Parameter rad_core0;
694        Parameter sld_core0;
695        Parameter thick_shell1;
696        Parameter sld_shell1;
697        Parameter thick_shell2;
698        Parameter sld_shell2;
699        Parameter thick_shell3;
700        Parameter sld_shell3;
701        Parameter thick_shell4;
702        Parameter sld_shell4;
703        Parameter sld_solv;
704        Parameter background;
705
706        // Constructor
707        CoreFourShellModel();
708
709        // Operators to get I(Q)
710        double operator()(double q);
711        double operator()(double qx, double qy);
712        double calculate_ER();
713        double evaluate_rphi(double q, double phi);
714};
715
716class CoreShellCylinderModel{
717public:
718        // Model parameters
719        Parameter radius;
720        Parameter scale;
721        Parameter thickness;
722        Parameter length;
723        Parameter core_sld;
724        Parameter shell_sld;
725        Parameter solvent_sld;
726        Parameter background;
727        Parameter axis_theta;
728        Parameter axis_phi;
729
730        // Constructor
731        CoreShellCylinderModel();
732
733        // Operators to get I(Q)
734        double operator()(double q);
735        double operator()(double qx, double qy);
736        double calculate_ER();
737        double evaluate_rphi(double q, double phi);
738};
739
740class EllipsoidModel{
741public:
742        // Model parameters
743        Parameter radius_a;
744        Parameter scale;
745        Parameter radius_b;
746        Parameter sldEll;
747        Parameter sldSolv;
748        Parameter background;
749        Parameter axis_theta;
750        Parameter axis_phi;
751
752        // Constructor
753        EllipsoidModel();
754
755        // Operators to get I(Q)
756        double operator()(double q);
757        double operator()(double qx, double qy);
758        double calculate_ER();
759        double evaluate_rphi(double q, double phi);
760};
761
762class EllipticalCylinderModel{
763public:
764        // Model parameters
765        Parameter r_minor;
766        Parameter scale;
767        Parameter r_ratio;
768        Parameter length;
769        Parameter sldCyl;
770        Parameter sldSolv;
771        Parameter background;
772        Parameter cyl_theta;
773        Parameter cyl_phi;
774        Parameter cyl_psi;
775
776        // Constructor
777        EllipticalCylinderModel();
778
779        // Operators to get I(Q)
780        double operator()(double q);
781        double operator()(double qx, double qy);
782        double calculate_ER();
783        double evaluate_rphi(double q, double phi);
784};
785class TriaxialEllipsoidModel{
786public:
787        // Model parameters
788        Parameter scale;
789        Parameter semi_axisA;
790        Parameter semi_axisB;
791        Parameter semi_axisC;
792        Parameter sldEll;
793        Parameter sldSolv;
794        Parameter background;
795        Parameter axis_theta;
796        Parameter axis_phi;
797        Parameter axis_psi;
798
799        // Constructor
800        TriaxialEllipsoidModel();
801
802        // Operators to get I(Q)
803        double operator()(double q);
804        double operator()(double qx, double qy);
805        double calculate_ER();
806        double evaluate_rphi(double q, double phi);
807};
808
809class FlexibleCylinderModel{
810public:
811        // Model parameters
812        Parameter scale;
813        Parameter length;
814        Parameter kuhn_length;
815        Parameter radius;
816        Parameter sldCyl;
817        Parameter sldSolv;
818        Parameter background;
819
820        // Constructor
821        FlexibleCylinderModel();
822
823        // Operators to get I(Q)
824        double operator()(double q);
825        double operator()(double qx, double qy);
826        double calculate_ER();
827        double evaluate_rphi(double q, double phi);
828};
829
830class FlexCylEllipXModel{
831public:
832        // Model parameters
833        Parameter scale;
834        Parameter length;
835        Parameter kuhn_length;
836        Parameter radius;
837        Parameter axis_ratio;
838        Parameter sldCyl;
839        Parameter sldSolv;
840        Parameter background;
841
842        // Constructor
843        FlexCylEllipXModel();
844
845        // Operators to get I(Q)
846        double operator()(double q);
847        double operator()(double qx, double qy);
848        double calculate_ER();
849        double evaluate_rphi(double q, double phi);
850};
851
852class StackedDisksModel{
853public:
854        // Model parameters
855        Parameter scale;
856        Parameter core_thick;
857        Parameter radius;
858        Parameter layer_thick;
859        Parameter core_sld;
860        Parameter layer_sld;
861        Parameter solvent_sld;
862        Parameter n_stacking;
863        Parameter sigma_d;
864        Parameter background;
865        Parameter axis_theta;
866        Parameter axis_phi;
867
868        // Constructor
869        StackedDisksModel();
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};
877
878class LamellarModel{
879public:
880        // Model parameters
881        Parameter scale;
882        Parameter bi_thick;
883        Parameter sld_bi;
884        Parameter sld_sol;
885        Parameter background;
886
887        // Constructor
888        LamellarModel();
889
890        // Operators to get I(Q)
891        double operator()(double q);
892        double operator()(double qx, double qy);
893        double calculate_ER();
894        double evaluate_rphi(double q, double phi);
895
896};
897
898class LamellarFFHGModel{
899public:
900        // Model parameters
901        Parameter scale;
902        Parameter t_length;
903        Parameter h_thickness;
904        Parameter sld_tail;
905        Parameter sld_head;
906        Parameter sld_solvent;
907        Parameter background;
908
909        // Constructor
910        LamellarFFHGModel();
911
912        // Operators to get I(Q)
913        double operator()(double q);
914        double operator()(double qx, double qy);
915        double calculate_ER();
916        double evaluate_rphi(double q, double phi);
917
918};
919
920
921
922class LamellarPSModel{
923public:
924        // Model parameters
925        Parameter scale;
926        Parameter spacing;
927        Parameter delta;
928        Parameter sld_bi;
929        Parameter sld_sol;
930        Parameter n_plates;
931        Parameter caille;
932        Parameter background;
933
934        // Constructor
935        LamellarPSModel();
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 LamellarPSHGModel{
945public:
946        // Model parameters
947        Parameter scale;
948        Parameter spacing;
949        Parameter deltaT;
950        Parameter deltaH;
951        Parameter sld_tail;
952        Parameter sld_head;
953        Parameter sld_solvent;
954        Parameter n_plates;
955        Parameter caille;
956        Parameter background;
957
958        // Constructor
959        LamellarPSHGModel();
960
961        // Operators to get I(Q)
962        double operator()(double q);
963        double operator()(double qx, double qy);
964        double calculate_ER();
965        double evaluate_rphi(double q, double phi);
966};
967
968
969class LamellarPCrystalModel{
970public:
971        // Model parameters
972        Parameter scale;
973        Parameter thickness;
974        Parameter Nlayers;
975        Parameter spacing;
976        Parameter pd_spacing;
977        Parameter sld_layer;
978        Parameter sld_solvent;
979        Parameter background;
980
981        // Constructor
982        LamellarPCrystalModel();
983
984        // Operators to get I(Q)
985        double operator()(double q);
986        double operator()(double qx, double qy);
987        double calculate_ER();
988        double evaluate_rphi(double q, double phi);
989};
990
991class CoreShellEllipsoidModel{
992public:
993        // Model parameters
994        Parameter scale;
995        Parameter equat_core;
996        Parameter polar_core;
997        Parameter equat_shell;
998        Parameter polar_shell;
999        Parameter sld_core;
1000        Parameter sld_shell;
1001        Parameter sld_solvent;
1002        Parameter background;
1003        Parameter axis_theta;
1004        Parameter axis_phi;
1005
1006        // Constructor
1007        CoreShellEllipsoidModel();
1008
1009        // Operators to get I(Q)
1010        double operator()(double q);
1011        double operator()(double qx, double qy);
1012        double calculate_ER();
1013        double evaluate_rphi(double q, double phi);
1014};
1015
1016class HollowCylinderModel{
1017public:
1018        // Model parameters
1019        Parameter scale;
1020        Parameter core_radius;
1021        Parameter radius;
1022        Parameter length;
1023        Parameter sldCyl;
1024        Parameter sldSolv;
1025        Parameter background;
1026        Parameter axis_theta;
1027        Parameter axis_phi;
1028
1029        //Constructor
1030        HollowCylinderModel();
1031
1032        //Operators to get I(Q)
1033        double operator()(double q);
1034        double operator()(double qx , double qy);
1035        double calculate_ER();
1036        double evaluate_rphi(double q, double phi);
1037};
1038
1039class MultiShellModel{
1040public:
1041        // Model parameters
1042        Parameter scale;
1043        Parameter core_radius;
1044        Parameter s_thickness;
1045        Parameter w_thickness;
1046        Parameter core_sld;
1047        Parameter shell_sld;
1048        Parameter n_pairs;
1049        Parameter background;
1050
1051        //Constructor
1052        MultiShellModel();
1053
1054        //Operators to get I(Q)
1055        double operator()(double q);
1056        double operator()(double qx , double qy);
1057        double calculate_ER();
1058        double evaluate_rphi(double q, double phi);
1059};
1060
1061class VesicleModel{
1062public:
1063        // Model parameters
1064        Parameter scale;
1065        Parameter radius;
1066        Parameter thickness;
1067        Parameter core_sld;
1068        Parameter shell_sld;
1069        Parameter background;
1070
1071        //Constructor
1072        VesicleModel();
1073
1074        //Operators to get I(Q)
1075        double operator()(double q);
1076        double operator()(double qx , double qy);
1077        double calculate_ER();
1078        double evaluate_rphi(double q, double phi);
1079};
1080
1081class BinaryHSModel{
1082public:
1083        // Model parameters
1084        Parameter l_radius;
1085        Parameter s_radius;
1086        Parameter vol_frac_ls;
1087        Parameter vol_frac_ss;
1088        Parameter ls_sld;
1089        Parameter ss_sld;
1090        Parameter solvent_sld;
1091        Parameter background;
1092
1093        //Constructor
1094        BinaryHSModel();
1095
1096        //Operators to get I(Q)
1097        double operator()(double q);
1098        double operator()(double qx , double qy);
1099        double calculate_ER();
1100        double evaluate_rphi(double q, double phi);
1101};
1102
1103class BinaryHSPSF11Model{
1104public:
1105        // Model parameters
1106        Parameter l_radius;
1107        Parameter s_radius;
1108        Parameter vol_frac_ls;
1109        Parameter vol_frac_ss;
1110        Parameter ls_sld;
1111        Parameter ss_sld;
1112        Parameter solvent_sld;
1113        Parameter background;
1114
1115        //Constructor
1116        BinaryHSPSF11Model();
1117
1118        //Operators to get I(Q)
1119        double operator()(double q);
1120        double operator()(double qx , double qy);
1121        double calculate_ER();
1122        double evaluate_rphi(double q, double phi);
1123};
1124
1125class Poly_GaussCoil{
1126public:
1127        // Model parameters
1128        Parameter rg;
1129        Parameter scale;
1130        Parameter poly_m;
1131        Parameter background;
1132
1133        // Constructor
1134        Poly_GaussCoil();
1135
1136        // Operators to get I(Q)
1137        double operator()(double q);
1138        double operator()(double qx, double qy);
1139        double calculate_ER();
1140        double evaluate_rphi(double q, double phi);
1141};
1142
1143class FractalModel{
1144public:
1145        // Model parameters
1146        Parameter radius;
1147        Parameter scale;
1148        Parameter fractal_dim;
1149        Parameter cor_length;
1150        Parameter sldBlock;
1151        Parameter sldSolv;
1152        Parameter background;
1153
1154        // Constructor
1155        FractalModel();
1156
1157        // Operators to get I(Q)
1158        double operator()(double q);
1159        double operator()(double qx, double qy);
1160        double calculate_ER();
1161        double evaluate_rphi(double q, double phi);
1162};
1163
1164#endif
Note: See TracBrowser for help on using the repository browser.