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

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

hope this was the last model left to add

  • Property mode set to 100644
File size: 21.5 KB
Line 
1/**
2        This software was developed by the University of Tennessee as part of the
3        Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
4        project funded by the US National Science Foundation.
5
6        If you use DANSE applications to do scientific research that leads to
7        publication, we ask that you acknowledge the use of the software with the
8        following sentence:
9
10        "This work benefited from DANSE software developed under NSF award DMR-0520547."
11
12        copyright 2008, University of Tennessee
13 */
14#ifndef MODEL_CLASS_H
15#define MODEL_CLASS_H
16
17#include <vector>
18#include "parameters.hh"
19extern "C" {
20        #include "cylinder.h"
21        #include "parallelepiped.h"
22        #include "lamellarPS.h"
23        #include "lamellar.h"
24        #include "fuzzysphere.h"
25}
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_sub0;
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        Parameter sldIM_flat1;
335        Parameter sldIM_flat2;
336        Parameter sldIM_flat3;
337        Parameter sldIM_flat4;
338        Parameter sldIM_flat5;
339        Parameter sldIM_flat6;
340        Parameter sldIM_flat7;
341        Parameter sldIM_flat8;
342        Parameter sldIM_flat9;
343        Parameter sldIM_flat10;
344
345        Parameter sldIM_sub0;
346        Parameter sldIM_medium;
347
348        // Constructor
349        ReflModel();
350
351        // Operators to get I(Q)
352        double operator()(double q);
353        double operator()(double qx, double qy);
354        double calculate_ER();
355        double evaluate_rphi(double q, double phi);
356};
357
358
359class SphereModel{
360public:
361        // Model parameters
362        Parameter radius;
363        Parameter scale;
364        Parameter sldSph;
365        Parameter sldSolv;
366        Parameter background;
367
368        // Constructor
369        SphereModel();
370
371        // Operators to get I(Q)
372        double operator()(double q);
373        double operator()(double qx, double qy);
374        double calculate_ER();
375        double evaluate_rphi(double q, double phi);
376};
377
378
379class SCCrystalModel{
380public:
381        // Model parameters
382        Parameter scale;
383        Parameter dnn;
384        Parameter d_factor;
385        Parameter radius;
386        Parameter sldSph;
387        Parameter sldSolv;
388        Parameter background;
389        Parameter theta;
390        Parameter phi;
391        Parameter psi;
392
393        // Constructor
394        SCCrystalModel();
395
396        // Operators to get I(Q)
397        double operator()(double q);
398        double operator()(double qx, double qy);
399        double calculate_ER();
400        double evaluate_rphi(double q, double phi);
401};
402
403
404class FCCrystalModel{
405public:
406        // Model parameters
407        Parameter scale;
408        Parameter dnn;
409        Parameter d_factor;
410        Parameter radius;
411        Parameter sldSph;
412        Parameter sldSolv;
413        Parameter background;
414        Parameter theta;
415        Parameter phi;
416        Parameter psi;
417
418        // Constructor
419        FCCrystalModel();
420
421        // Operators to get I(Q)
422        double operator()(double q);
423        double operator()(double qx, double qy);
424        double calculate_ER();
425        double evaluate_rphi(double q, double phi);
426};
427
428
429class BCCrystalModel{
430public:
431        // Model parameters
432        Parameter scale;
433        Parameter dnn;
434        Parameter d_factor;
435        Parameter radius;
436        Parameter sldSph;
437        Parameter sldSolv;
438        Parameter background;
439        Parameter theta;
440        Parameter phi;
441        Parameter psi;
442
443        // Constructor
444        BCCrystalModel();
445
446        // Operators to get I(Q)
447        double operator()(double q);
448        double operator()(double qx, double qy);
449        double calculate_ER();
450        double evaluate_rphi(double q, double phi);
451};
452
453
454class FuzzySphereModel{
455public:
456        // Model parameters
457        Parameter radius;
458        Parameter scale;
459        Parameter fuzziness;
460        Parameter sldSph;
461        Parameter sldSolv;
462        Parameter background;
463
464        // Constructor
465        FuzzySphereModel();
466
467        // Operators to get I(Q)
468        double operator()(double q);
469        double operator()(double qx, double qy);
470        double calculate_ER();
471        double evaluate_rphi(double q, double phi);
472};
473
474class HardsphereStructure{
475public:
476        // Model parameters
477        Parameter effect_radius;
478        Parameter volfraction;
479
480        // Constructor
481        HardsphereStructure();
482
483        // Operators to get I(Q)
484        double operator()(double q);
485        double operator()(double qx, double qy);
486        double calculate_ER();
487        double evaluate_rphi(double q, double phi);
488};
489
490class StickyHSStructure{
491public:
492        // Model parameters
493        Parameter effect_radius;
494        Parameter volfraction;
495        Parameter perturb;
496        Parameter stickiness;
497
498        // Constructor
499        StickyHSStructure();
500
501        // Operators to get I(Q)
502        double operator()(double q);
503        double operator()(double qx, double qy);
504        double calculate_ER();
505        double evaluate_rphi(double q, double phi);
506};
507
508class SquareWellStructure{
509public:
510        // Model parameters
511        Parameter effect_radius;
512        Parameter volfraction;
513        Parameter welldepth;
514        Parameter wellwidth;
515
516        // Constructor
517        SquareWellStructure();
518
519        // Operators to get I(Q)
520        double operator()(double q);
521        double operator()(double qx, double qy);
522        double calculate_ER();
523        double evaluate_rphi(double q, double phi);
524};
525
526class HayterMSAStructure{
527public:
528        // Model parameters
529        Parameter effect_radius;
530        Parameter charge;
531        Parameter volfraction;
532        Parameter temperature;
533        Parameter saltconc;
534        Parameter dielectconst;
535
536        // Constructor
537        HayterMSAStructure();
538
539        // Operators to get I(Q)
540        double operator()(double q);
541        double operator()(double qx, double qy);
542        double calculate_ER();
543        double evaluate_rphi(double q, double phi);
544};
545
546class DiamEllipFunc{
547public:
548        // Model parameters
549        Parameter radius_a;
550        Parameter radius_b;
551
552        // Constructor
553        DiamEllipFunc();
554
555        // Operators to get I(Q)
556        double operator()(double q);
557        double operator()(double qx, double qy);
558        double calculate_ER();
559        double evaluate_rphi(double q, double phi);
560};
561
562class DiamCylFunc{
563public:
564        // Model parameters
565        Parameter radius;
566        Parameter length;
567
568        // Constructor
569        DiamCylFunc();
570
571        // Operators to get I(Q)
572        double operator()(double q);
573        double operator()(double qx, double qy);
574        double calculate_ER();
575        double evaluate_rphi(double q, double phi);
576};
577
578class CoreShellModel{
579public:
580        // Model parameters
581        Parameter radius;
582        Parameter scale;
583        Parameter thickness;
584        Parameter core_sld;
585        Parameter shell_sld;
586        Parameter solvent_sld;
587        Parameter background;
588
589        // Constructor
590        CoreShellModel();
591
592        // Operators to get I(Q)
593        double operator()(double q);
594        double operator()(double qx, double qy);
595        double calculate_ER();
596        double evaluate_rphi(double q, double phi);
597};
598
599class CoreFourShellModel{
600public:
601        // Model parameters
602        Parameter scale;
603        Parameter rad_core0;
604        Parameter sld_core0;
605        Parameter thick_shell1;
606        Parameter sld_shell1;
607        Parameter thick_shell2;
608        Parameter sld_shell2;
609        Parameter thick_shell3;
610        Parameter sld_shell3;
611        Parameter thick_shell4;
612        Parameter sld_shell4;
613        Parameter sld_solv;
614        Parameter background;
615
616        // Constructor
617        CoreFourShellModel();
618
619        // Operators to get I(Q)
620        double operator()(double q);
621        double operator()(double qx, double qy);
622        double calculate_ER();
623        double evaluate_rphi(double q, double phi);
624};
625
626class CoreShellCylinderModel{
627public:
628        // Model parameters
629        Parameter radius;
630        Parameter scale;
631        Parameter thickness;
632        Parameter length;
633        Parameter core_sld;
634        Parameter shell_sld;
635        Parameter solvent_sld;
636        Parameter background;
637        Parameter axis_theta;
638        Parameter axis_phi;
639
640        // Constructor
641        CoreShellCylinderModel();
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 EllipsoidModel{
651public:
652        // Model parameters
653        Parameter radius_a;
654        Parameter scale;
655        Parameter radius_b;
656        Parameter sldEll;
657        Parameter sldSolv;
658        Parameter background;
659        Parameter axis_theta;
660        Parameter axis_phi;
661
662        // Constructor
663        EllipsoidModel();
664
665        // Operators to get I(Q)
666        double operator()(double q);
667        double operator()(double qx, double qy);
668        double calculate_ER();
669        double evaluate_rphi(double q, double phi);
670};
671
672class EllipticalCylinderModel{
673public:
674        // Model parameters
675        Parameter r_minor;
676        Parameter scale;
677        Parameter r_ratio;
678        Parameter length;
679        Parameter sldCyl;
680        Parameter sldSolv;
681        Parameter background;
682        Parameter cyl_theta;
683        Parameter cyl_phi;
684        Parameter cyl_psi;
685
686        // Constructor
687        EllipticalCylinderModel();
688
689        // Operators to get I(Q)
690        double operator()(double q);
691        double operator()(double qx, double qy);
692        double calculate_ER();
693        double evaluate_rphi(double q, double phi);
694};
695class TriaxialEllipsoidModel{
696public:
697        // Model parameters
698        Parameter scale;
699        Parameter semi_axisA;
700        Parameter semi_axisB;
701        Parameter semi_axisC;
702        Parameter sldEll;
703        Parameter sldSolv;
704        Parameter background;
705        Parameter axis_theta;
706        Parameter axis_phi;
707        Parameter axis_psi;
708
709        // Constructor
710        TriaxialEllipsoidModel();
711
712        // Operators to get I(Q)
713        double operator()(double q);
714        double operator()(double qx, double qy);
715        double calculate_ER();
716        double evaluate_rphi(double q, double phi);
717};
718
719class FlexibleCylinderModel{
720public:
721        // Model parameters
722        Parameter scale;
723        Parameter length;
724        Parameter kuhn_length;
725        Parameter radius;
726        Parameter sldCyl;
727        Parameter sldSolv;
728        Parameter background;
729
730        // Constructor
731        FlexibleCylinderModel();
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 FlexCylEllipXModel{
741public:
742        // Model parameters
743        Parameter scale;
744        Parameter length;
745        Parameter kuhn_length;
746        Parameter radius;
747        Parameter axis_ratio;
748        Parameter sldCyl;
749        Parameter sldSolv;
750        Parameter background;
751
752        // Constructor
753        FlexCylEllipXModel();
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 StackedDisksModel{
763public:
764        // Model parameters
765        Parameter scale;
766        Parameter core_thick;
767        Parameter radius;
768        Parameter layer_thick;
769        Parameter core_sld;
770        Parameter layer_sld;
771        Parameter solvent_sld;
772        Parameter n_stacking;
773        Parameter sigma_d;
774        Parameter background;
775        Parameter axis_theta;
776        Parameter axis_phi;
777
778        // Constructor
779        StackedDisksModel();
780
781        // Operators to get I(Q)
782        double operator()(double q);
783        double operator()(double qx, double qy);
784        double calculate_ER();
785        double evaluate_rphi(double q, double phi);
786};
787
788class LamellarModel{
789public:
790        // Model parameters
791        Parameter scale;
792        Parameter bi_thick;
793        Parameter sld_bi;
794        Parameter sld_sol;
795        Parameter background;
796
797        // Constructor
798        LamellarModel();
799
800        // Operators to get I(Q)
801        double operator()(double q);
802        double operator()(double qx, double qy);
803        double calculate_ER();
804        double evaluate_rphi(double q, double phi);
805
806};
807
808class LamellarFFHGModel{
809public:
810        // Model parameters
811        Parameter scale;
812        Parameter t_length;
813        Parameter h_thickness;
814        Parameter sld_tail;
815        Parameter sld_head;
816        Parameter sld_solvent;
817        Parameter background;
818
819        // Constructor
820        LamellarFFHGModel();
821
822        // Operators to get I(Q)
823        double operator()(double q);
824        double operator()(double qx, double qy);
825        double calculate_ER();
826        double evaluate_rphi(double q, double phi);
827
828};
829
830
831
832class LamellarPSModel{
833public:
834        // Model parameters
835        Parameter scale;
836        Parameter spacing;
837        Parameter delta;
838        Parameter sld_bi;
839        Parameter sld_sol;
840        Parameter n_plates;
841        Parameter caille;
842        Parameter background;
843
844        // Constructor
845        LamellarPSModel();
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 LamellarPSHGModel{
855public:
856        // Model parameters
857        Parameter scale;
858        Parameter spacing;
859        Parameter deltaT;
860        Parameter deltaH;
861        Parameter sld_tail;
862        Parameter sld_head;
863        Parameter sld_solvent;
864        Parameter n_plates;
865        Parameter caille;
866        Parameter background;
867
868        // Constructor
869        LamellarPSHGModel();
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
878
879class LamellarPCrystalModel{
880public:
881        // Model parameters
882        Parameter scale;
883        Parameter thickness;
884        Parameter Nlayers;
885        Parameter spacing;
886        Parameter pd_spacing;
887        Parameter sld_layer;
888        Parameter sld_solvent;
889        Parameter background;
890
891        // Constructor
892        LamellarPCrystalModel();
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 CoreShellEllipsoidModel{
902public:
903        // Model parameters
904        Parameter scale;
905        Parameter equat_core;
906        Parameter polar_core;
907        Parameter equat_shell;
908        Parameter polar_shell;
909        Parameter sld_core;
910        Parameter sld_shell;
911        Parameter sld_solvent;
912        Parameter background;
913        Parameter axis_theta;
914        Parameter axis_phi;
915
916        // Constructor
917        CoreShellEllipsoidModel();
918
919        // Operators to get I(Q)
920        double operator()(double q);
921        double operator()(double qx, double qy);
922        double calculate_ER();
923        double evaluate_rphi(double q, double phi);
924};
925
926class HollowCylinderModel{
927public:
928        // Model parameters
929        Parameter scale;
930        Parameter core_radius;
931        Parameter radius;
932        Parameter length;
933        Parameter sldCyl;
934        Parameter sldSolv;
935        Parameter background;
936        Parameter axis_theta;
937        Parameter axis_phi;
938
939        //Constructor
940        HollowCylinderModel();
941
942        //Operators to get I(Q)
943        double operator()(double q);
944        double operator()(double qx , double qy);
945        double calculate_ER();
946        double evaluate_rphi(double q, double phi);
947};
948
949class MultiShellModel{
950public:
951        // Model parameters
952        Parameter scale;
953        Parameter core_radius;
954        Parameter s_thickness;
955        Parameter w_thickness;
956        Parameter core_sld;
957        Parameter shell_sld;
958        Parameter n_pairs;
959        Parameter background;
960
961        //Constructor
962        MultiShellModel();
963
964        //Operators to get I(Q)
965        double operator()(double q);
966        double operator()(double qx , double qy);
967        double calculate_ER();
968        double evaluate_rphi(double q, double phi);
969};
970
971class VesicleModel{
972public:
973        // Model parameters
974        Parameter scale;
975        Parameter radius;
976        Parameter thickness;
977        Parameter core_sld;
978        Parameter shell_sld;
979        Parameter background;
980
981        //Constructor
982        VesicleModel();
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 BinaryHSModel{
992public:
993        // Model parameters
994        Parameter l_radius;
995        Parameter s_radius;
996        Parameter vol_frac_ls;
997        Parameter vol_frac_ss;
998        Parameter ls_sld;
999        Parameter ss_sld;
1000        Parameter solvent_sld;
1001        Parameter background;
1002
1003        //Constructor
1004        BinaryHSModel();
1005
1006        //Operators to get I(Q)
1007        double operator()(double q);
1008        double operator()(double qx , double qy);
1009        double calculate_ER();
1010        double evaluate_rphi(double q, double phi);
1011};
1012
1013class BinaryHSPSF11Model{
1014public:
1015        // Model parameters
1016        Parameter l_radius;
1017        Parameter s_radius;
1018        Parameter vol_frac_ls;
1019        Parameter vol_frac_ss;
1020        Parameter ls_sld;
1021        Parameter ss_sld;
1022        Parameter solvent_sld;
1023        Parameter background;
1024
1025        //Constructor
1026        BinaryHSPSF11Model();
1027
1028        //Operators to get I(Q)
1029        double operator()(double q);
1030        double operator()(double qx , double qy);
1031        double calculate_ER();
1032        double evaluate_rphi(double q, double phi);
1033};
1034
1035class Poly_GaussCoil{
1036public:
1037        // Model parameters
1038        Parameter rg;
1039        Parameter scale;
1040        Parameter poly_m;
1041        Parameter background;
1042
1043        // Constructor
1044        Poly_GaussCoil();
1045
1046        // Operators to get I(Q)
1047        double operator()(double q);
1048        double operator()(double qx, double qy);
1049        double calculate_ER();
1050        double evaluate_rphi(double q, double phi);
1051};
1052
1053class FractalModel{
1054public:
1055        // Model parameters
1056        Parameter radius;
1057        Parameter scale;
1058        Parameter fractal_dim;
1059        Parameter cor_length;
1060        Parameter sldBlock;
1061        Parameter sldSolv;
1062        Parameter background;
1063
1064        // Constructor
1065        FractalModel();
1066
1067        // Operators to get I(Q)
1068        double operator()(double q);
1069        double operator()(double qx, double qy);
1070        double calculate_ER();
1071        double evaluate_rphi(double q, double phi);
1072};
1073
1074#endif
Note: See TracBrowser for help on using the repository browser.