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

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 fb071900 was 13eb1c4, checked in by Jae Cho <jhjcho@…>, 15 years ago

updated sld parameters according to the changes in NIST lib: missed it in the last commit

  • Property mode set to 100644
File size: 14.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 ParallelepipedModel{
52public:
53        // TODO: add 2D
54        // Model parameters
55        Parameter scale;
56        Parameter short_a;
57        Parameter short_b;
58        Parameter long_c;
59        Parameter sldPipe;
60        Parameter sldSolv;
61        Parameter background;
62        Parameter parallel_theta;
63        Parameter parallel_phi;
64        Parameter parallel_psi;
65
66        // Constructor
67        ParallelepipedModel();
68
69        // Operators to get I(Q)
70        double operator()(double q);
71        double operator()(double qx, double qy);
72        double calculate_ER();
73        double evaluate_rphi(double q, double phi);
74};
75
76
77class SphereModel{
78public:
79        // Model parameters
80        Parameter radius;
81        Parameter scale;
82        Parameter sldSph;
83        Parameter sldSolv;
84        Parameter background;
85
86        // Constructor
87        SphereModel();
88
89        // Operators to get I(Q)
90        double operator()(double q);
91        double operator()(double qx, double qy);
92        double calculate_ER();
93        double evaluate_rphi(double q, double phi);
94};
95
96class FuzzySphereModel{
97public:
98        // Model parameters
99        Parameter radius;
100        Parameter scale;
101        Parameter fuzziness;
102        Parameter sldSph;
103        Parameter sldSolv;
104        Parameter background;
105
106        // Constructor
107        FuzzySphereModel();
108
109        // Operators to get I(Q)
110        double operator()(double q);
111        double operator()(double qx, double qy);
112        double calculate_ER();
113        double evaluate_rphi(double q, double phi);
114};
115
116class HardsphereStructure{
117public:
118        // Model parameters
119        Parameter effect_radius;
120        Parameter volfraction;
121
122        // Constructor
123        HardsphereStructure();
124
125        // Operators to get I(Q)
126        double operator()(double q);
127        double operator()(double qx, double qy);
128        double calculate_ER();
129        double evaluate_rphi(double q, double phi);
130};
131
132class StickyHSStructure{
133public:
134        // Model parameters
135        Parameter effect_radius;
136        Parameter volfraction;
137        Parameter perturb;
138        Parameter stickiness;
139
140        // Constructor
141        StickyHSStructure();
142
143        // Operators to get I(Q)
144        double operator()(double q);
145        double operator()(double qx, double qy);
146        double calculate_ER();
147        double evaluate_rphi(double q, double phi);
148};
149
150class SquareWellStructure{
151public:
152        // Model parameters
153        Parameter effect_radius;
154        Parameter volfraction;
155        Parameter welldepth;
156        Parameter wellwidth;
157
158        // Constructor
159        SquareWellStructure();
160
161        // Operators to get I(Q)
162        double operator()(double q);
163        double operator()(double qx, double qy);
164        double calculate_ER();
165        double evaluate_rphi(double q, double phi);
166};
167
168class HayterMSAStructure{
169public:
170        // Model parameters
171        Parameter effect_radius;
172        Parameter charge;
173        Parameter volfraction;
174        Parameter temperature;
175        Parameter saltconc;
176        Parameter dielectconst;
177
178        // Constructor
179        HayterMSAStructure();
180
181        // Operators to get I(Q)
182        double operator()(double q);
183        double operator()(double qx, double qy);
184        double calculate_ER();
185        double evaluate_rphi(double q, double phi);
186};
187
188class DiamEllipFunc{
189public:
190        // Model parameters
191        Parameter radius_a;
192        Parameter radius_b;
193
194        // Constructor
195        DiamEllipFunc();
196
197        // Operators to get I(Q)
198        double operator()(double q);
199        double operator()(double qx, double qy);
200        double calculate_ER();
201        double evaluate_rphi(double q, double phi);
202};
203
204class DiamCylFunc{
205public:
206        // Model parameters
207        Parameter radius;
208        Parameter length;
209
210        // Constructor
211        DiamCylFunc();
212
213        // Operators to get I(Q)
214        double operator()(double q);
215        double operator()(double qx, double qy);
216        double calculate_ER();
217        double evaluate_rphi(double q, double phi);
218};
219
220class CoreShellModel{
221public:
222        // Model parameters
223        Parameter radius;
224        Parameter scale;
225        Parameter thickness;
226        Parameter core_sld;
227        Parameter shell_sld;
228        Parameter solvent_sld;
229        Parameter background;
230
231        // Constructor
232        CoreShellModel();
233
234        // Operators to get I(Q)
235        double operator()(double q);
236        double operator()(double qx, double qy);
237        double calculate_ER();
238        double evaluate_rphi(double q, double phi);
239};
240
241class CoreFourShellModel{
242public:
243        // Model parameters
244        Parameter scale;
245        Parameter rad_core;
246        Parameter sld_core;
247        Parameter thick_shell1;
248        Parameter sld_shell1;
249        Parameter thick_shell2;
250        Parameter sld_shell2;
251        Parameter thick_shell3;
252        Parameter sld_shell3;
253        Parameter thick_shell4;
254        Parameter sld_shell4;
255        Parameter sld_solv;
256        Parameter background;
257
258        // Constructor
259        CoreFourShellModel();
260
261        // Operators to get I(Q)
262        double operator()(double q);
263        double operator()(double qx, double qy);
264        double calculate_ER();
265        double evaluate_rphi(double q, double phi);
266};
267
268class CoreShellCylinderModel{
269public:
270        // Model parameters
271        Parameter radius;
272        Parameter scale;
273        Parameter thickness;
274        Parameter length;
275        Parameter core_sld;
276        Parameter shell_sld;
277        Parameter solvent_sld;
278        Parameter background;
279        Parameter axis_theta;
280        Parameter axis_phi;
281
282        // Constructor
283        CoreShellCylinderModel();
284
285        // Operators to get I(Q)
286        double operator()(double q);
287        double operator()(double qx, double qy);
288        double calculate_ER();
289        double evaluate_rphi(double q, double phi);
290};
291
292class EllipsoidModel{
293public:
294        // Model parameters
295        Parameter radius_a;
296        Parameter scale;
297        Parameter radius_b;
298        Parameter sldEll;
299        Parameter sldSolv;
300        Parameter background;
301        Parameter axis_theta;
302        Parameter axis_phi;
303
304        // Constructor
305        EllipsoidModel();
306
307        // Operators to get I(Q)
308        double operator()(double q);
309        double operator()(double qx, double qy);
310        double calculate_ER();
311        double evaluate_rphi(double q, double phi);
312};
313
314class EllipticalCylinderModel{
315public:
316        // Model parameters
317        Parameter r_minor;
318        Parameter scale;
319        Parameter r_ratio;
320        Parameter length;
321        Parameter sldCyl;
322        Parameter sldSolv;
323        Parameter background;
324        Parameter cyl_theta;
325        Parameter cyl_phi;
326        Parameter cyl_psi;
327
328        // Constructor
329        EllipticalCylinderModel();
330
331        // Operators to get I(Q)
332        double operator()(double q);
333        double operator()(double qx, double qy);
334        double calculate_ER();
335        double evaluate_rphi(double q, double phi);
336};
337class TriaxialEllipsoidModel{
338public:
339        // Model parameters
340        Parameter scale;
341        Parameter semi_axisA;
342        Parameter semi_axisB;
343        Parameter semi_axisC;
344        Parameter sldEll;
345        Parameter sldSolv;
346        Parameter background;
347        Parameter axis_theta;
348        Parameter axis_phi;
349        Parameter axis_psi;
350
351        // Constructor
352        TriaxialEllipsoidModel();
353
354        // Operators to get I(Q)
355        double operator()(double q);
356        double operator()(double qx, double qy);
357        double calculate_ER();
358        double evaluate_rphi(double q, double phi);
359};
360
361class FlexibleCylinderModel{
362public:
363        // Model parameters
364        Parameter scale;
365        Parameter length;
366        Parameter kuhn_length;
367        Parameter radius;
368        Parameter sldCyl;
369        Parameter sldSolv;
370        Parameter background;
371
372        // Constructor
373        FlexibleCylinderModel();
374
375        // Operators to get I(Q)
376        double operator()(double q);
377        double operator()(double qx, double qy);
378        double calculate_ER();
379        double evaluate_rphi(double q, double phi);
380};
381
382class FlexCylEllipXModel{
383public:
384        // Model parameters
385        Parameter scale;
386        Parameter length;
387        Parameter kuhn_length;
388        Parameter radius;
389        Parameter axis_ratio;
390        Parameter sldCyl;
391        Parameter sldSolv;
392        Parameter background;
393
394        // Constructor
395        FlexCylEllipXModel();
396
397        // Operators to get I(Q)
398        double operator()(double q);
399        double operator()(double qx, double qy);
400        double calculate_ER();
401        double evaluate_rphi(double q, double phi);
402};
403
404class StackedDisksModel{
405public:
406        // Model parameters
407        Parameter scale;
408        Parameter core_thick;
409        Parameter radius;
410        Parameter layer_thick;
411        Parameter core_sld;
412        Parameter layer_sld;
413        Parameter solvent_sld;
414        Parameter n_stacking;
415        Parameter sigma_d;
416        Parameter background;
417        Parameter axis_theta;
418        Parameter axis_phi;
419
420        // Constructor
421        StackedDisksModel();
422
423        // Operators to get I(Q)
424        double operator()(double q);
425        double operator()(double qx, double qy);
426        double calculate_ER();
427        double evaluate_rphi(double q, double phi);
428};
429
430class LamellarModel{
431public:
432        // Model parameters
433        Parameter scale;
434        Parameter bi_thick;
435        Parameter sld_bi;
436        Parameter sld_sol;
437        Parameter background;
438
439        // Constructor
440        LamellarModel();
441
442        // Operators to get I(Q)
443        double operator()(double q);
444        double operator()(double qx, double qy);
445        double calculate_ER();
446        double evaluate_rphi(double q, double phi);
447
448};
449
450class LamellarFFHGModel{
451public:
452        // Model parameters
453        Parameter scale;
454        Parameter t_length;
455        Parameter h_thickness;
456        Parameter sld_tail;
457        Parameter sld_head;
458        Parameter sld_solvent;
459        Parameter background;
460
461        // Constructor
462        LamellarFFHGModel();
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
472
473
474class LamellarPSModel{
475public:
476        // Model parameters
477        Parameter scale;
478        Parameter spacing;
479        Parameter delta;
480        Parameter sld_bi;
481        Parameter sld_sol;
482        Parameter n_plates;
483        Parameter caille;
484        Parameter background;
485
486        // Constructor
487        LamellarPSModel();
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
496class LamellarPSHGModel{
497public:
498        // Model parameters
499        Parameter scale;
500        Parameter spacing;
501        Parameter deltaT;
502        Parameter deltaH;
503        Parameter sld_tail;
504        Parameter sld_head;
505        Parameter sld_solvent;
506        Parameter n_plates;
507        Parameter caille;
508        Parameter background;
509
510        // Constructor
511        LamellarPSHGModel();
512
513        // Operators to get I(Q)
514        double operator()(double q);
515        double operator()(double qx, double qy);
516        double calculate_ER();
517        double evaluate_rphi(double q, double phi);
518};
519
520class CoreShellEllipsoidModel{
521public:
522        // Model parameters
523        Parameter scale;
524        Parameter equat_core;
525        Parameter polar_core;
526        Parameter equat_shell;
527        Parameter polar_shell;
528        Parameter sld_core;
529        Parameter sld_shell;
530        Parameter sld_solvent;
531        Parameter background;
532        Parameter axis_theta;
533        Parameter axis_phi;
534
535        // Constructor
536        CoreShellEllipsoidModel();
537
538        // Operators to get I(Q)
539        double operator()(double q);
540        double operator()(double qx, double qy);
541        double calculate_ER();
542        double evaluate_rphi(double q, double phi);
543};
544
545class HollowCylinderModel{
546public:
547        // Model parameters
548        Parameter scale;
549        Parameter core_radius;
550        Parameter radius;
551        Parameter length;
552        Parameter sldCyl;
553        Parameter sldSolv;
554        Parameter background;
555        Parameter axis_theta;
556        Parameter axis_phi;
557
558        //Constructor
559        HollowCylinderModel();
560
561        //Operators to get I(Q)
562        double operator()(double q);
563        double operator()(double qx , double qy);
564        double calculate_ER();
565        double evaluate_rphi(double q, double phi);
566};
567
568class MultiShellModel{
569public:
570        // Model parameters
571        Parameter scale;
572        Parameter core_radius;
573        Parameter s_thickness;
574        Parameter w_thickness;
575        Parameter core_sld;
576        Parameter shell_sld;
577        Parameter n_pairs;
578        Parameter background;
579
580        //Constructor
581        MultiShellModel();
582
583        //Operators to get I(Q)
584        double operator()(double q);
585        double operator()(double qx , double qy);
586        double calculate_ER();
587        double evaluate_rphi(double q, double phi);
588};
589
590class VesicleModel{
591public:
592        // Model parameters
593        Parameter scale;
594        Parameter radius;
595        Parameter thickness;
596        Parameter core_sld;
597        Parameter shell_sld;
598        Parameter background;
599
600        //Constructor
601        VesicleModel();
602
603        //Operators to get I(Q)
604        double operator()(double q);
605        double operator()(double qx , double qy);
606        double calculate_ER();
607        double evaluate_rphi(double q, double phi);
608};
609
610class BinaryHSModel{
611public:
612        // Model parameters
613        Parameter l_radius;
614        Parameter s_radius;
615        Parameter vol_frac_ls;
616        Parameter vol_frac_ss;
617        Parameter ls_sld;
618        Parameter ss_sld;
619        Parameter solvent_sld;
620        Parameter background;
621
622        //Constructor
623        BinaryHSModel();
624
625        //Operators to get I(Q)
626        double operator()(double q);
627        double operator()(double qx , double qy);
628        double calculate_ER();
629        double evaluate_rphi(double q, double phi);
630};
631
632class BinaryHSPSF11Model{
633public:
634        // Model parameters
635        Parameter l_radius;
636        Parameter s_radius;
637        Parameter vol_frac_ls;
638        Parameter vol_frac_ss;
639        Parameter ls_sld;
640        Parameter ss_sld;
641        Parameter solvent_sld;
642        Parameter background;
643
644        //Constructor
645        BinaryHSPSF11Model();
646
647        //Operators to get I(Q)
648        double operator()(double q);
649        double operator()(double qx , double qy);
650        double calculate_ER();
651        double evaluate_rphi(double q, double phi);
652};
653
654class Poly_GaussCoil{
655public:
656        // Model parameters
657        Parameter rg;
658        Parameter scale;
659        Parameter poly_m;
660        Parameter background;
661
662        // Constructor
663        Poly_GaussCoil();
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 FractalModel{
673public:
674        // Model parameters
675        Parameter radius;
676        Parameter scale;
677        Parameter fractal_dim;
678        Parameter cor_length;
679        Parameter sldBlock;
680        Parameter sldSolv;
681        Parameter background;
682
683        // Constructor
684        FractalModel();
685
686        // Operators to get I(Q)
687        double operator()(double q);
688        double operator()(double qx, double qy);
689        double calculate_ER();
690        double evaluate_rphi(double q, double phi);
691};
692
693/***
694class PolymerExclVolModel{
695public:
696        // Model parameters
697        Parameter rg;
698        Parameter scale;
699        Parameter m;
700        Parameter background;
701
702        // Constructor
703        PolymerExclVolModel();
704
705        // Operators to get I(Q)
706        double operator()(double q);
707        double operator()(double qx, double qy);
708        double calculate_ER();
709        double evaluate_rphi(double q, double phi);
710};
711***/
712#endif
Note: See TracBrowser for help on using the repository browser.