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

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 4cc8285c was 339ce67, checked in by Jae Cho <jhjcho@…>, 14 years ago

added some models and tests

  • Property mode set to 100644
File size: 20.9 KB
RevLine 
[fca6936]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"
[8a48713]21        #include "parallelepiped.h"
[c1c29b6]22        #include "lamellarPS.h"
23        #include "lamellar.h"
[c724ccd]24        #include "fuzzysphere.h"
[fca6936]25}
26
27using namespace std;
28
[af03ddd]29class CylinderModel{
[fca6936]30public:
31        // Model parameters
32        Parameter radius;
33        Parameter scale;
34        Parameter length;
[f10063e]35        Parameter sldCyl;
36        Parameter sldSolv;
[fca6936]37        Parameter background;
38        Parameter cyl_theta;
39        Parameter cyl_phi;
40
41        // Constructor
[af03ddd]42        CylinderModel();
[fca6936]43
44        // Operators to get I(Q)
45        double operator()(double q);
46        double operator()(double qx, double qy);
[5eb9154]47        double calculate_ER();
[fca6936]48        double evaluate_rphi(double q, double phi);
49};
50
[339ce67]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
[8a48713]98class ParallelepipedModel{
99public:
[975ec8e]100        // TODO: add 2D
[8a48713]101        // Model parameters
102        Parameter scale;
[2cb89e7]103        Parameter short_a;
[8e36cdd]104        Parameter short_b;
105        Parameter long_c;
[f10063e]106        Parameter sldPipe;
107        Parameter sldSolv;
[8a48713]108        Parameter background;
109        Parameter parallel_theta;
110        Parameter parallel_phi;
[975ec8e]111        Parameter parallel_psi;
[8a48713]112
113        // Constructor
114        ParallelepipedModel();
115
116        // Operators to get I(Q)
117        double operator()(double q);
118        double operator()(double qx, double qy);
[5eb9154]119        double calculate_ER();
[8a48713]120        double evaluate_rphi(double q, double phi);
121};
122
123
[e096270]124class OnionModel{
125public:
126        // Model parameters
127        Parameter n_shells;
128        Parameter scale;
[339ce67]129        Parameter rad_core0;
130        Parameter sld_core0;
[e096270]131        Parameter sld_solv;
132        Parameter background;
133
134        Parameter sld_out_shell1;
135        Parameter sld_out_shell2;
136        Parameter sld_out_shell3;
137        Parameter sld_out_shell4;
138        Parameter sld_out_shell5;
139        Parameter sld_out_shell6;
140        Parameter sld_out_shell7;
141        Parameter sld_out_shell8;
142        Parameter sld_out_shell9;
143        Parameter sld_out_shell10;
144
145        Parameter sld_in_shell1;
146        Parameter sld_in_shell2;
147        Parameter sld_in_shell3;
148        Parameter sld_in_shell4;
149        Parameter sld_in_shell5;
150        Parameter sld_in_shell6;
151        Parameter sld_in_shell7;
152        Parameter sld_in_shell8;
153        Parameter sld_in_shell9;
154        Parameter sld_in_shell10;
155
156        Parameter A_shell1;
157        Parameter A_shell2;
158        Parameter A_shell3;
159        Parameter A_shell4;
160        Parameter A_shell5;
161        Parameter A_shell6;
162        Parameter A_shell7;
163        Parameter A_shell8;
164        Parameter A_shell9;
165        Parameter A_shell10;
166
167        Parameter thick_shell1;
168        Parameter thick_shell2;
169        Parameter thick_shell3;
170        Parameter thick_shell4;
171        Parameter thick_shell5;
172        Parameter thick_shell6;
173        Parameter thick_shell7;
174        Parameter thick_shell8;
175        Parameter thick_shell9;
176        Parameter thick_shell10;
177
178        Parameter func_shell1;
179        Parameter func_shell2;
180        Parameter func_shell3;
181        Parameter func_shell4;
182        Parameter func_shell5;
183        Parameter func_shell6;
184        Parameter func_shell7;
185        Parameter func_shell8;
186        Parameter func_shell9;
187        Parameter func_shell10;
188
189        // Constructor
190        OnionModel();
191
192        // Operators to get I(Q)
193        double operator()(double q);
194        double operator()(double qx, double qy);
195        double calculate_ER();
196        double evaluate_rphi(double q, double phi);
197};
198
[35aface]199
200class RPAModel{
201public:
202        // Model parameters
203        Parameter lcase_n;
204        Parameter ba;
205        Parameter bb;
206        Parameter bc;
207        Parameter bd;
208
209        Parameter Kab;
210        Parameter Kac;
211        Parameter Kad;
212        Parameter Kbc;
213        Parameter Kbd;
214        Parameter Kcd;
215
216        Parameter scale;
217        Parameter background;
218
219        Parameter Na;
220        Parameter Phia;
221        Parameter va;
222        Parameter La;
223
224        Parameter Nb;
225        Parameter Phib;
226        Parameter vb;
227        Parameter Lb;
228
229        Parameter Nc;
230        Parameter Phic;
231        Parameter vc;
232        Parameter Lc;
233
234        Parameter Nd;
235        Parameter Phid;
236        Parameter vd;
237        Parameter Ld;
238
239        // Constructor
240        RPAModel();
241
242        // Operators to get I(Q)
243        double operator()(double q);
244        double operator()(double qx, double qy);
245        double calculate_ER();
246        double evaluate_rphi(double q, double phi);
247};
248
249
250class ReflModel{
251public:
252        // Model parameters
253        Parameter n_layers;
254        Parameter scale;
255        Parameter thick_inter0;
256        Parameter func_inter0;
257        Parameter sld_sub0;
258        Parameter sld_medium;
259        Parameter background;
260
261        Parameter sld_flat1;
262        Parameter sld_flat2;
263        Parameter sld_flat3;
264        Parameter sld_flat4;
265        Parameter sld_flat5;
266        Parameter sld_flat6;
267        Parameter sld_flat7;
268        Parameter sld_flat8;
269        Parameter sld_flat9;
270        Parameter sld_flat10;
271
272        Parameter thick_inter1;
273        Parameter thick_inter2;
274        Parameter thick_inter3;
275        Parameter thick_inter4;
276        Parameter thick_inter5;
277        Parameter thick_inter6;
278        Parameter thick_inter7;
279        Parameter thick_inter8;
280        Parameter thick_inter9;
281        Parameter thick_inter10;
282
283        Parameter thick_flat1;
284        Parameter thick_flat2;
285        Parameter thick_flat3;
286        Parameter thick_flat4;
287        Parameter thick_flat5;
288        Parameter thick_flat6;
289        Parameter thick_flat7;
290        Parameter thick_flat8;
291        Parameter thick_flat9;
292        Parameter thick_flat10;
293
294        Parameter func_inter1;
295        Parameter func_inter2;
296        Parameter func_inter3;
297        Parameter func_inter4;
298        Parameter func_inter5;
299        Parameter func_inter6;
300        Parameter func_inter7;
301        Parameter func_inter8;
302        Parameter func_inter9;
303        Parameter func_inter10;
304
[339ce67]305        Parameter sldIM_flat1;
306        Parameter sldIM_flat2;
307        Parameter sldIM_flat3;
308        Parameter sldIM_flat4;
309        Parameter sldIM_flat5;
310        Parameter sldIM_flat6;
311        Parameter sldIM_flat7;
312        Parameter sldIM_flat8;
313        Parameter sldIM_flat9;
314        Parameter sldIM_flat10;
315
316        Parameter sldIM_sub0;
317        Parameter sldIM_medium;
318
[35aface]319        // Constructor
320        ReflModel();
321
322        // Operators to get I(Q)
323        double operator()(double q);
324        double operator()(double qx, double qy);
325        double calculate_ER();
326        double evaluate_rphi(double q, double phi);
327};
328
329
[0f5bc9f]330class SphereModel{
331public:
332        // Model parameters
333        Parameter radius;
334        Parameter scale;
[f10063e]335        Parameter sldSph;
336        Parameter sldSolv;
[0f5bc9f]337        Parameter background;
338
339        // Constructor
340        SphereModel();
341
342        // Operators to get I(Q)
343        double operator()(double q);
344        double operator()(double qx, double qy);
[5eb9154]345        double calculate_ER();
[0f5bc9f]346        double evaluate_rphi(double q, double phi);
347};
348
[e096270]349
[94a3f8f]350class SCCrystalModel{
351public:
352        // Model parameters
353        Parameter scale;
354        Parameter dnn;
355        Parameter d_factor;
356        Parameter radius;
357        Parameter sldSph;
358        Parameter sldSolv;
359        Parameter background;
360        Parameter theta;
361        Parameter phi;
362        Parameter psi;
363
364        // Constructor
365        SCCrystalModel();
366
367        // Operators to get I(Q)
368        double operator()(double q);
369        double operator()(double qx, double qy);
370        double calculate_ER();
371        double evaluate_rphi(double q, double phi);
372};
373
374
[d5b6a9d]375class FCCrystalModel{
376public:
377        // Model parameters
378        Parameter scale;
379        Parameter dnn;
380        Parameter d_factor;
381        Parameter radius;
382        Parameter sldSph;
383        Parameter sldSolv;
384        Parameter background;
385        Parameter theta;
386        Parameter phi;
387        Parameter psi;
388
389        // Constructor
390        FCCrystalModel();
391
392        // Operators to get I(Q)
393        double operator()(double q);
394        double operator()(double qx, double qy);
395        double calculate_ER();
396        double evaluate_rphi(double q, double phi);
397};
398
399
400class BCCrystalModel{
401public:
402        // Model parameters
403        Parameter scale;
404        Parameter dnn;
405        Parameter d_factor;
406        Parameter radius;
407        Parameter sldSph;
408        Parameter sldSolv;
409        Parameter background;
410        Parameter theta;
411        Parameter phi;
412        Parameter psi;
413
414        // Constructor
415        BCCrystalModel();
416
417        // Operators to get I(Q)
418        double operator()(double q);
419        double operator()(double qx, double qy);
420        double calculate_ER();
421        double evaluate_rphi(double q, double phi);
422};
423
424
[c724ccd]425class FuzzySphereModel{
426public:
427        // Model parameters
428        Parameter radius;
429        Parameter scale;
430        Parameter fuzziness;
431        Parameter sldSph;
432        Parameter sldSolv;
433        Parameter background;
434
435        // Constructor
436        FuzzySphereModel();
437
438        // Operators to get I(Q)
439        double operator()(double q);
440        double operator()(double qx, double qy);
441        double calculate_ER();
442        double evaluate_rphi(double q, double phi);
443};
444
[25579e8]445class HardsphereStructure{
446public:
447        // Model parameters
[5eb9154]448        Parameter effect_radius;
[25579e8]449        Parameter volfraction;
450
451        // Constructor
452        HardsphereStructure();
453
454        // Operators to get I(Q)
455        double operator()(double q);
456        double operator()(double qx, double qy);
[5eb9154]457        double calculate_ER();
[25579e8]458        double evaluate_rphi(double q, double phi);
459};
460
461class StickyHSStructure{
462public:
463        // Model parameters
[5eb9154]464        Parameter effect_radius;
[25579e8]465        Parameter volfraction;
466        Parameter perturb;
467        Parameter stickiness;
468
469        // Constructor
470        StickyHSStructure();
471
472        // Operators to get I(Q)
473        double operator()(double q);
474        double operator()(double qx, double qy);
[5eb9154]475        double calculate_ER();
[25579e8]476        double evaluate_rphi(double q, double phi);
477};
478
479class SquareWellStructure{
480public:
481        // Model parameters
[5eb9154]482        Parameter effect_radius;
[25579e8]483        Parameter volfraction;
484        Parameter welldepth;
485        Parameter wellwidth;
486
487        // Constructor
488        SquareWellStructure();
489
490        // Operators to get I(Q)
491        double operator()(double q);
492        double operator()(double qx, double qy);
[5eb9154]493        double calculate_ER();
[25579e8]494        double evaluate_rphi(double q, double phi);
495};
496
497class HayterMSAStructure{
498public:
499        // Model parameters
[5eb9154]500        Parameter effect_radius;
[25579e8]501        Parameter charge;
502        Parameter volfraction;
503        Parameter temperature;
504        Parameter saltconc;
505        Parameter dielectconst;
[a0782f1]506
[25579e8]507        // Constructor
508        HayterMSAStructure();
509
510        // Operators to get I(Q)
511        double operator()(double q);
512        double operator()(double qx, double qy);
[5eb9154]513        double calculate_ER();
[25579e8]514        double evaluate_rphi(double q, double phi);
515};
516
[a0782f1]517class DiamEllipFunc{
518public:
519        // Model parameters
520        Parameter radius_a;
521        Parameter radius_b;
522
523        // Constructor
524        DiamEllipFunc();
525
526        // Operators to get I(Q)
527        double operator()(double q);
528        double operator()(double qx, double qy);
[5eb9154]529        double calculate_ER();
[a0782f1]530        double evaluate_rphi(double q, double phi);
531};
532
533class DiamCylFunc{
534public:
535        // Model parameters
536        Parameter radius;
537        Parameter length;
538
539        // Constructor
540        DiamCylFunc();
541
542        // Operators to get I(Q)
543        double operator()(double q);
544        double operator()(double qx, double qy);
[5eb9154]545        double calculate_ER();
[a0782f1]546        double evaluate_rphi(double q, double phi);
547};
548
[0f5bc9f]549class CoreShellModel{
550public:
551        // Model parameters
552        Parameter radius;
553        Parameter scale;
554        Parameter thickness;
555        Parameter core_sld;
556        Parameter shell_sld;
557        Parameter solvent_sld;
558        Parameter background;
559
560        // Constructor
561        CoreShellModel();
562
563        // Operators to get I(Q)
564        double operator()(double q);
565        double operator()(double qx, double qy);
[5eb9154]566        double calculate_ER();
[0f5bc9f]567        double evaluate_rphi(double q, double phi);
568};
569
[c724ccd]570class CoreFourShellModel{
571public:
572        // Model parameters
573        Parameter scale;
[339ce67]574        Parameter rad_core0;
575        Parameter sld_core0;
[c724ccd]576        Parameter thick_shell1;
577        Parameter sld_shell1;
578        Parameter thick_shell2;
579        Parameter sld_shell2;
580        Parameter thick_shell3;
581        Parameter sld_shell3;
582        Parameter thick_shell4;
583        Parameter sld_shell4;
584        Parameter sld_solv;
585        Parameter background;
586
587        // Constructor
588        CoreFourShellModel();
589
590        // Operators to get I(Q)
591        double operator()(double q);
592        double operator()(double qx, double qy);
593        double calculate_ER();
594        double evaluate_rphi(double q, double phi);
595};
596
[0f5bc9f]597class CoreShellCylinderModel{
598public:
599        // Model parameters
600        Parameter radius;
601        Parameter scale;
602        Parameter thickness;
603        Parameter length;
604        Parameter core_sld;
605        Parameter shell_sld;
606        Parameter solvent_sld;
607        Parameter background;
608        Parameter axis_theta;
609        Parameter axis_phi;
610
611        // Constructor
612        CoreShellCylinderModel();
613
614        // Operators to get I(Q)
615        double operator()(double q);
616        double operator()(double qx, double qy);
[5eb9154]617        double calculate_ER();
[0f5bc9f]618        double evaluate_rphi(double q, double phi);
619};
620
621class EllipsoidModel{
622public:
623        // Model parameters
624        Parameter radius_a;
625        Parameter scale;
626        Parameter radius_b;
[f10063e]627        Parameter sldEll;
628        Parameter sldSolv;
[0f5bc9f]629        Parameter background;
630        Parameter axis_theta;
631        Parameter axis_phi;
632
633        // Constructor
634        EllipsoidModel();
635
636        // Operators to get I(Q)
637        double operator()(double q);
638        double operator()(double qx, double qy);
[5eb9154]639        double calculate_ER();
[0f5bc9f]640        double evaluate_rphi(double q, double phi);
641};
642
643class EllipticalCylinderModel{
644public:
645        // Model parameters
646        Parameter r_minor;
647        Parameter scale;
648        Parameter r_ratio;
649        Parameter length;
[f10063e]650        Parameter sldCyl;
651        Parameter sldSolv;
[0f5bc9f]652        Parameter background;
653        Parameter cyl_theta;
654        Parameter cyl_phi;
655        Parameter cyl_psi;
656
657        // Constructor
658        EllipticalCylinderModel();
659
660        // Operators to get I(Q)
661        double operator()(double q);
662        double operator()(double qx, double qy);
[5eb9154]663        double calculate_ER();
[0f5bc9f]664        double evaluate_rphi(double q, double phi);
665};
[5068697]666class TriaxialEllipsoidModel{
667public:
668        // Model parameters
669        Parameter scale;
670        Parameter semi_axisA;
671        Parameter semi_axisB;
672        Parameter semi_axisC;
[13eb1c4]673        Parameter sldEll;
674        Parameter sldSolv;
[5068697]675        Parameter background;
676        Parameter axis_theta;
677        Parameter axis_phi;
[975ec8e]678        Parameter axis_psi;
679
[5068697]680        // Constructor
681        TriaxialEllipsoidModel();
682
683        // Operators to get I(Q)
684        double operator()(double q);
685        double operator()(double qx, double qy);
[5eb9154]686        double calculate_ER();
[5068697]687        double evaluate_rphi(double q, double phi);
688};
689
690class FlexibleCylinderModel{
691public:
692        // Model parameters
693        Parameter scale;
694        Parameter length;
695        Parameter kuhn_length;
696        Parameter radius;
[f10063e]697        Parameter sldCyl;
698        Parameter sldSolv;
[5068697]699        Parameter background;
[975ec8e]700
[5068697]701        // Constructor
702        FlexibleCylinderModel();
703
704        // Operators to get I(Q)
705        double operator()(double q);
706        double operator()(double qx, double qy);
[5eb9154]707        double calculate_ER();
[5068697]708        double evaluate_rphi(double q, double phi);
709};
710
[c724ccd]711class FlexCylEllipXModel{
712public:
713        // Model parameters
714        Parameter scale;
715        Parameter length;
716        Parameter kuhn_length;
717        Parameter radius;
718        Parameter axis_ratio;
719        Parameter sldCyl;
720        Parameter sldSolv;
721        Parameter background;
722
723        // Constructor
724        FlexCylEllipXModel();
725
726        // Operators to get I(Q)
727        double operator()(double q);
728        double operator()(double qx, double qy);
729        double calculate_ER();
730        double evaluate_rphi(double q, double phi);
731};
732
[5068697]733class StackedDisksModel{
734public:
735        // Model parameters
736        Parameter scale;
[975ec8e]737        Parameter core_thick;
[5068697]738        Parameter radius;
[975ec8e]739        Parameter layer_thick;
[5068697]740        Parameter core_sld;
741        Parameter layer_sld;
742        Parameter solvent_sld;
[975ec8e]743        Parameter n_stacking;
744        Parameter sigma_d;
[5068697]745        Parameter background;
746        Parameter axis_theta;
747        Parameter axis_phi;
[975ec8e]748
[5068697]749        // Constructor
750        StackedDisksModel();
751
752        // Operators to get I(Q)
753        double operator()(double q);
754        double operator()(double qx, double qy);
[5eb9154]755        double calculate_ER();
[5068697]756        double evaluate_rphi(double q, double phi);
757};
[27a0771]758
[34c3020]759class LamellarModel{
760public:
761        // Model parameters
762        Parameter scale;
[975ec8e]763        Parameter bi_thick;
764        Parameter sld_bi;
765        Parameter sld_sol;
[34c3020]766        Parameter background;
[975ec8e]767
[34c3020]768        // Constructor
769        LamellarModel();
770
771        // Operators to get I(Q)
772        double operator()(double q);
773        double operator()(double qx, double qy);
[5eb9154]774        double calculate_ER();
[34c3020]775        double evaluate_rphi(double q, double phi);
776
777};
778
779class LamellarFFHGModel{
780public:
781        // Model parameters
782        Parameter scale;
783        Parameter t_length;
784        Parameter h_thickness;
785        Parameter sld_tail;
786        Parameter sld_head;
787        Parameter sld_solvent;
788        Parameter background;
[975ec8e]789
[34c3020]790        // Constructor
791        LamellarFFHGModel();
792
793        // Operators to get I(Q)
794        double operator()(double q);
795        double operator()(double qx, double qy);
[5eb9154]796        double calculate_ER();
[34c3020]797        double evaluate_rphi(double q, double phi);
798
799};
800
801
802
[27a0771]803class LamellarPSModel{
804public:
805        // Model parameters
806        Parameter scale;
807        Parameter spacing;
808        Parameter delta;
[f10063e]809        Parameter sld_bi;
810        Parameter sld_sol;
[27a0771]811        Parameter n_plates;
812        Parameter caille;
813        Parameter background;
[975ec8e]814
[27a0771]815        // Constructor
816        LamellarPSModel();
817
818        // Operators to get I(Q)
819        double operator()(double q);
820        double operator()(double qx, double qy);
[5eb9154]821        double calculate_ER();
[27a0771]822        double evaluate_rphi(double q, double phi);
823};
824
825class LamellarPSHGModel{
826public:
827        // Model parameters
828        Parameter scale;
829        Parameter spacing;
830        Parameter deltaT;
831        Parameter deltaH;
832        Parameter sld_tail;
833        Parameter sld_head;
834        Parameter sld_solvent;
835        Parameter n_plates;
836        Parameter caille;
837        Parameter background;
[975ec8e]838
[27a0771]839        // Constructor
840        LamellarPSHGModel();
841
842        // Operators to get I(Q)
843        double operator()(double q);
844        double operator()(double qx, double qy);
[5eb9154]845        double calculate_ER();
[27a0771]846        double evaluate_rphi(double q, double phi);
847};
848
[d5b6a9d]849
850class LamellarPCrystalModel{
851public:
852        // Model parameters
853        Parameter scale;
854        Parameter thickness;
855        Parameter Nlayers;
856        Parameter spacing;
857        Parameter pd_spacing;
858        Parameter sld_layer;
859        Parameter sld_solvent;
860        Parameter background;
861
862        // Constructor
863        LamellarPCrystalModel();
864
865        // Operators to get I(Q)
866        double operator()(double q);
867        double operator()(double qx, double qy);
868        double calculate_ER();
869        double evaluate_rphi(double q, double phi);
870};
871
[eddff027]872class CoreShellEllipsoidModel{
[975ec8e]873public:
874        // Model parameters
875        Parameter scale;
876        Parameter equat_core;
877        Parameter polar_core;
878        Parameter equat_shell;
879        Parameter polar_shell;
[f10063e]880        Parameter sld_core;
881        Parameter sld_shell;
[975ec8e]882        Parameter sld_solvent;
883        Parameter background;
884        Parameter axis_theta;
885        Parameter axis_phi;
886
887        // Constructor
[eddff027]888        CoreShellEllipsoidModel();
[975ec8e]889
890        // Operators to get I(Q)
891        double operator()(double q);
892        double operator()(double qx, double qy);
[5eb9154]893        double calculate_ER();
[975ec8e]894        double evaluate_rphi(double q, double phi);
895};
896
[27fea3f]897class HollowCylinderModel{
898public:
899        // Model parameters
900        Parameter scale;
901        Parameter core_radius;
[e2afadf]902        Parameter radius;
[27fea3f]903        Parameter length;
[f10063e]904        Parameter sldCyl;
905        Parameter sldSolv;
[27fea3f]906        Parameter background;
907        Parameter axis_theta;
908        Parameter axis_phi;
[975ec8e]909
[27fea3f]910        //Constructor
911        HollowCylinderModel();
[975ec8e]912
[27fea3f]913        //Operators to get I(Q)
914        double operator()(double q);
915        double operator()(double qx , double qy);
[5eb9154]916        double calculate_ER();
[27fea3f]917        double evaluate_rphi(double q, double phi);
918};
[3d25331f]919
920class MultiShellModel{
921public:
922        // Model parameters
923        Parameter scale;
924        Parameter core_radius;
925        Parameter s_thickness;
926        Parameter w_thickness;
927        Parameter core_sld;
928        Parameter shell_sld;
929        Parameter n_pairs;
930        Parameter background;
[975ec8e]931
[3d25331f]932        //Constructor
933        MultiShellModel();
[975ec8e]934
[3d25331f]935        //Operators to get I(Q)
936        double operator()(double q);
937        double operator()(double qx , double qy);
[5eb9154]938        double calculate_ER();
[3d25331f]939        double evaluate_rphi(double q, double phi);
940};
941
942class VesicleModel{
943public:
944        // Model parameters
945        Parameter scale;
[e2afadf]946        Parameter radius;
[3d25331f]947        Parameter thickness;
948        Parameter core_sld;
949        Parameter shell_sld;
950        Parameter background;
[975ec8e]951
[3d25331f]952        //Constructor
953        VesicleModel();
[975ec8e]954
[3d25331f]955        //Operators to get I(Q)
956        double operator()(double q);
957        double operator()(double qx , double qy);
[5eb9154]958        double calculate_ER();
[3d25331f]959        double evaluate_rphi(double q, double phi);
960};
961
962class BinaryHSModel{
963public:
964        // Model parameters
965        Parameter l_radius;
966        Parameter s_radius;
967        Parameter vol_frac_ls;
968        Parameter vol_frac_ss;
969        Parameter ls_sld;
970        Parameter ss_sld;
971        Parameter solvent_sld;
972        Parameter background;
[975ec8e]973
[3d25331f]974        //Constructor
975        BinaryHSModel();
[975ec8e]976
[3d25331f]977        //Operators to get I(Q)
978        double operator()(double q);
979        double operator()(double qx , double qy);
[5eb9154]980        double calculate_ER();
[3d25331f]981        double evaluate_rphi(double q, double phi);
982};
983
[2c4b289]984class BinaryHSPSF11Model{
985public:
986        // Model parameters
987        Parameter l_radius;
988        Parameter s_radius;
989        Parameter vol_frac_ls;
990        Parameter vol_frac_ss;
991        Parameter ls_sld;
992        Parameter ss_sld;
993        Parameter solvent_sld;
994        Parameter background;
[975ec8e]995
[2c4b289]996        //Constructor
997        BinaryHSPSF11Model();
[975ec8e]998
[2c4b289]999        //Operators to get I(Q)
1000        double operator()(double q);
1001        double operator()(double qx , double qy);
[5eb9154]1002        double calculate_ER();
[2c4b289]1003        double evaluate_rphi(double q, double phi);
1004};
1005
[c724ccd]1006class Poly_GaussCoil{
1007public:
1008        // Model parameters
1009        Parameter rg;
1010        Parameter scale;
1011        Parameter poly_m;
1012        Parameter background;
1013
1014        // Constructor
1015        Poly_GaussCoil();
1016
1017        // Operators to get I(Q)
1018        double operator()(double q);
1019        double operator()(double qx, double qy);
1020        double calculate_ER();
1021        double evaluate_rphi(double q, double phi);
1022};
1023
1024class FractalModel{
1025public:
1026        // Model parameters
1027        Parameter radius;
1028        Parameter scale;
1029        Parameter fractal_dim;
1030        Parameter cor_length;
1031        Parameter sldBlock;
1032        Parameter sldSolv;
1033        Parameter background;
1034
1035        // Constructor
1036        FractalModel();
1037
1038        // Operators to get I(Q)
1039        double operator()(double q);
1040        double operator()(double qx, double qy);
1041        double calculate_ER();
1042        double evaluate_rphi(double q, double phi);
1043};
1044
[fca6936]1045#endif
Note: See TracBrowser for help on using the repository browser.