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

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 b9b9930 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
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:
100        // Model parameters
101        Parameter scale;
[2cb89e7]102        Parameter short_a;
[8e36cdd]103        Parameter short_b;
104        Parameter long_c;
[f10063e]105        Parameter sldPipe;
106        Parameter sldSolv;
[8a48713]107        Parameter background;
108        Parameter parallel_theta;
109        Parameter parallel_phi;
[975ec8e]110        Parameter parallel_psi;
[8a48713]111
112        // Constructor
113        ParallelepipedModel();
114
115        // Operators to get I(Q)
116        double operator()(double q);
117        double operator()(double qx, double qy);
[5eb9154]118        double calculate_ER();
[8a48713]119        double evaluate_rphi(double q, double phi);
120};
121
122
[18f2ca1]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
[e096270]153class OnionModel{
154public:
155        // Model parameters
156        Parameter n_shells;
157        Parameter scale;
[339ce67]158        Parameter rad_core0;
159        Parameter sld_core0;
[e096270]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
[35aface]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;
[96d19c6]286        Parameter sld_bottom0;
[35aface]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
[96d19c6]345
[0f5bc9f]346class SphereModel{
347public:
348        // Model parameters
349        Parameter radius;
350        Parameter scale;
[f10063e]351        Parameter sldSph;
352        Parameter sldSolv;
[0f5bc9f]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);
[5eb9154]361        double calculate_ER();
[0f5bc9f]362        double evaluate_rphi(double q, double phi);
363};
364
[e096270]365
[96d19c6]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
[94a3f8f]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
[d5b6a9d]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
[c724ccd]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
[25579e8]542class HardsphereStructure{
543public:
544        // Model parameters
[5eb9154]545        Parameter effect_radius;
[25579e8]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);
[5eb9154]554        double calculate_ER();
[25579e8]555        double evaluate_rphi(double q, double phi);
556};
557
558class StickyHSStructure{
559public:
560        // Model parameters
[5eb9154]561        Parameter effect_radius;
[25579e8]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);
[5eb9154]572        double calculate_ER();
[25579e8]573        double evaluate_rphi(double q, double phi);
574};
575
576class SquareWellStructure{
577public:
578        // Model parameters
[5eb9154]579        Parameter effect_radius;
[25579e8]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);
[5eb9154]590        double calculate_ER();
[25579e8]591        double evaluate_rphi(double q, double phi);
592};
593
594class HayterMSAStructure{
595public:
596        // Model parameters
[5eb9154]597        Parameter effect_radius;
[25579e8]598        Parameter charge;
599        Parameter volfraction;
600        Parameter temperature;
601        Parameter saltconc;
602        Parameter dielectconst;
[a0782f1]603
[25579e8]604        // Constructor
605        HayterMSAStructure();
606
607        // Operators to get I(Q)
608        double operator()(double q);
609        double operator()(double qx, double qy);
[5eb9154]610        double calculate_ER();
[25579e8]611        double evaluate_rphi(double q, double phi);
612};
613
[a0782f1]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);
[5eb9154]626        double calculate_ER();
[a0782f1]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);
[5eb9154]642        double calculate_ER();
[a0782f1]643        double evaluate_rphi(double q, double phi);
644};
645
[96d19c6]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
[0f5bc9f]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);
[5eb9154]685        double calculate_ER();
[0f5bc9f]686        double evaluate_rphi(double q, double phi);
687};
688
[c724ccd]689class CoreFourShellModel{
690public:
691        // Model parameters
692        Parameter scale;
[339ce67]693        Parameter rad_core0;
694        Parameter sld_core0;
[c724ccd]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
[0f5bc9f]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);
[5eb9154]736        double calculate_ER();
[0f5bc9f]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;
[f10063e]746        Parameter sldEll;
747        Parameter sldSolv;
[0f5bc9f]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);
[5eb9154]758        double calculate_ER();
[0f5bc9f]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;
[f10063e]769        Parameter sldCyl;
770        Parameter sldSolv;
[0f5bc9f]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);
[5eb9154]782        double calculate_ER();
[0f5bc9f]783        double evaluate_rphi(double q, double phi);
784};
[5068697]785class TriaxialEllipsoidModel{
786public:
787        // Model parameters
788        Parameter scale;
789        Parameter semi_axisA;
790        Parameter semi_axisB;
791        Parameter semi_axisC;
[13eb1c4]792        Parameter sldEll;
793        Parameter sldSolv;
[5068697]794        Parameter background;
795        Parameter axis_theta;
796        Parameter axis_phi;
[975ec8e]797        Parameter axis_psi;
798
[5068697]799        // Constructor
800        TriaxialEllipsoidModel();
801
802        // Operators to get I(Q)
803        double operator()(double q);
804        double operator()(double qx, double qy);
[5eb9154]805        double calculate_ER();
[5068697]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;
[f10063e]816        Parameter sldCyl;
817        Parameter sldSolv;
[5068697]818        Parameter background;
[975ec8e]819
[5068697]820        // Constructor
821        FlexibleCylinderModel();
822
823        // Operators to get I(Q)
824        double operator()(double q);
825        double operator()(double qx, double qy);
[5eb9154]826        double calculate_ER();
[5068697]827        double evaluate_rphi(double q, double phi);
828};
829
[c724ccd]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
[5068697]852class StackedDisksModel{
853public:
854        // Model parameters
855        Parameter scale;
[975ec8e]856        Parameter core_thick;
[5068697]857        Parameter radius;
[975ec8e]858        Parameter layer_thick;
[5068697]859        Parameter core_sld;
860        Parameter layer_sld;
861        Parameter solvent_sld;
[975ec8e]862        Parameter n_stacking;
863        Parameter sigma_d;
[5068697]864        Parameter background;
865        Parameter axis_theta;
866        Parameter axis_phi;
[975ec8e]867
[5068697]868        // Constructor
869        StackedDisksModel();
870
871        // Operators to get I(Q)
872        double operator()(double q);
873        double operator()(double qx, double qy);
[5eb9154]874        double calculate_ER();
[5068697]875        double evaluate_rphi(double q, double phi);
876};
[27a0771]877
[34c3020]878class LamellarModel{
879public:
880        // Model parameters
881        Parameter scale;
[975ec8e]882        Parameter bi_thick;
883        Parameter sld_bi;
884        Parameter sld_sol;
[34c3020]885        Parameter background;
[975ec8e]886
[34c3020]887        // Constructor
888        LamellarModel();
889
890        // Operators to get I(Q)
891        double operator()(double q);
892        double operator()(double qx, double qy);
[5eb9154]893        double calculate_ER();
[34c3020]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;
[975ec8e]908
[34c3020]909        // Constructor
910        LamellarFFHGModel();
911
912        // Operators to get I(Q)
913        double operator()(double q);
914        double operator()(double qx, double qy);
[5eb9154]915        double calculate_ER();
[34c3020]916        double evaluate_rphi(double q, double phi);
917
918};
919
920
921
[27a0771]922class LamellarPSModel{
923public:
924        // Model parameters
925        Parameter scale;
926        Parameter spacing;
927        Parameter delta;
[f10063e]928        Parameter sld_bi;
929        Parameter sld_sol;
[27a0771]930        Parameter n_plates;
931        Parameter caille;
932        Parameter background;
[975ec8e]933
[27a0771]934        // Constructor
935        LamellarPSModel();
936
937        // Operators to get I(Q)
938        double operator()(double q);
939        double operator()(double qx, double qy);
[5eb9154]940        double calculate_ER();
[27a0771]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;
[975ec8e]957
[27a0771]958        // Constructor
959        LamellarPSHGModel();
960
961        // Operators to get I(Q)
962        double operator()(double q);
963        double operator()(double qx, double qy);
[5eb9154]964        double calculate_ER();
[27a0771]965        double evaluate_rphi(double q, double phi);
966};
967
[d5b6a9d]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
[eddff027]991class CoreShellEllipsoidModel{
[975ec8e]992public:
993        // Model parameters
994        Parameter scale;
995        Parameter equat_core;
996        Parameter polar_core;
997        Parameter equat_shell;
998        Parameter polar_shell;
[f10063e]999        Parameter sld_core;
1000        Parameter sld_shell;
[975ec8e]1001        Parameter sld_solvent;
1002        Parameter background;
1003        Parameter axis_theta;
1004        Parameter axis_phi;
1005
1006        // Constructor
[eddff027]1007        CoreShellEllipsoidModel();
[975ec8e]1008
1009        // Operators to get I(Q)
1010        double operator()(double q);
1011        double operator()(double qx, double qy);
[5eb9154]1012        double calculate_ER();
[975ec8e]1013        double evaluate_rphi(double q, double phi);
1014};
1015
[27fea3f]1016class HollowCylinderModel{
1017public:
1018        // Model parameters
1019        Parameter scale;
1020        Parameter core_radius;
[e2afadf]1021        Parameter radius;
[27fea3f]1022        Parameter length;
[f10063e]1023        Parameter sldCyl;
1024        Parameter sldSolv;
[27fea3f]1025        Parameter background;
1026        Parameter axis_theta;
1027        Parameter axis_phi;
[975ec8e]1028
[27fea3f]1029        //Constructor
1030        HollowCylinderModel();
[975ec8e]1031
[27fea3f]1032        //Operators to get I(Q)
1033        double operator()(double q);
1034        double operator()(double qx , double qy);
[5eb9154]1035        double calculate_ER();
[27fea3f]1036        double evaluate_rphi(double q, double phi);
1037};
[3d25331f]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;
[975ec8e]1050
[3d25331f]1051        //Constructor
1052        MultiShellModel();
[975ec8e]1053
[3d25331f]1054        //Operators to get I(Q)
1055        double operator()(double q);
1056        double operator()(double qx , double qy);
[5eb9154]1057        double calculate_ER();
[3d25331f]1058        double evaluate_rphi(double q, double phi);
1059};
1060
1061class VesicleModel{
1062public:
1063        // Model parameters
1064        Parameter scale;
[e2afadf]1065        Parameter radius;
[3d25331f]1066        Parameter thickness;
1067        Parameter core_sld;
1068        Parameter shell_sld;
1069        Parameter background;
[975ec8e]1070
[3d25331f]1071        //Constructor
1072        VesicleModel();
[975ec8e]1073
[3d25331f]1074        //Operators to get I(Q)
1075        double operator()(double q);
1076        double operator()(double qx , double qy);
[5eb9154]1077        double calculate_ER();
[3d25331f]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;
[975ec8e]1092
[3d25331f]1093        //Constructor
1094        BinaryHSModel();
[975ec8e]1095
[3d25331f]1096        //Operators to get I(Q)
1097        double operator()(double q);
1098        double operator()(double qx , double qy);
[5eb9154]1099        double calculate_ER();
[3d25331f]1100        double evaluate_rphi(double q, double phi);
1101};
1102
[2c4b289]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;
[975ec8e]1114
[2c4b289]1115        //Constructor
1116        BinaryHSPSF11Model();
[975ec8e]1117
[2c4b289]1118        //Operators to get I(Q)
1119        double operator()(double q);
1120        double operator()(double qx , double qy);
[5eb9154]1121        double calculate_ER();
[2c4b289]1122        double evaluate_rphi(double q, double phi);
1123};
1124
[c724ccd]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
[fca6936]1164#endif
Note: See TracBrowser for help on using the repository browser.