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

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 8426622 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
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
[8a48713]51class ParallelepipedModel{
52public:
[975ec8e]53        // TODO: add 2D
[8a48713]54        // Model parameters
55        Parameter scale;
[2cb89e7]56        Parameter short_a;
[8e36cdd]57        Parameter short_b;
58        Parameter long_c;
[f10063e]59        Parameter sldPipe;
60        Parameter sldSolv;
[8a48713]61        Parameter background;
62        Parameter parallel_theta;
63        Parameter parallel_phi;
[975ec8e]64        Parameter parallel_psi;
[8a48713]65
66        // Constructor
67        ParallelepipedModel();
68
69        // Operators to get I(Q)
70        double operator()(double q);
71        double operator()(double qx, double qy);
[5eb9154]72        double calculate_ER();
[8a48713]73        double evaluate_rphi(double q, double phi);
74};
75
76
[0f5bc9f]77class SphereModel{
78public:
79        // Model parameters
80        Parameter radius;
81        Parameter scale;
[f10063e]82        Parameter sldSph;
83        Parameter sldSolv;
[0f5bc9f]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);
[5eb9154]92        double calculate_ER();
[0f5bc9f]93        double evaluate_rphi(double q, double phi);
94};
95
[c724ccd]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
[25579e8]116class HardsphereStructure{
117public:
118        // Model parameters
[5eb9154]119        Parameter effect_radius;
[25579e8]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);
[5eb9154]128        double calculate_ER();
[25579e8]129        double evaluate_rphi(double q, double phi);
130};
131
132class StickyHSStructure{
133public:
134        // Model parameters
[5eb9154]135        Parameter effect_radius;
[25579e8]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);
[5eb9154]146        double calculate_ER();
[25579e8]147        double evaluate_rphi(double q, double phi);
148};
149
150class SquareWellStructure{
151public:
152        // Model parameters
[5eb9154]153        Parameter effect_radius;
[25579e8]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);
[5eb9154]164        double calculate_ER();
[25579e8]165        double evaluate_rphi(double q, double phi);
166};
167
168class HayterMSAStructure{
169public:
170        // Model parameters
[5eb9154]171        Parameter effect_radius;
[25579e8]172        Parameter charge;
173        Parameter volfraction;
174        Parameter temperature;
175        Parameter saltconc;
176        Parameter dielectconst;
[a0782f1]177
[25579e8]178        // Constructor
179        HayterMSAStructure();
180
181        // Operators to get I(Q)
182        double operator()(double q);
183        double operator()(double qx, double qy);
[5eb9154]184        double calculate_ER();
[25579e8]185        double evaluate_rphi(double q, double phi);
186};
187
[a0782f1]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);
[5eb9154]200        double calculate_ER();
[a0782f1]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);
[5eb9154]216        double calculate_ER();
[a0782f1]217        double evaluate_rphi(double q, double phi);
218};
219
[0f5bc9f]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);
[5eb9154]237        double calculate_ER();
[0f5bc9f]238        double evaluate_rphi(double q, double phi);
239};
240
[c724ccd]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
[0f5bc9f]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);
[5eb9154]288        double calculate_ER();
[0f5bc9f]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;
[f10063e]298        Parameter sldEll;
299        Parameter sldSolv;
[0f5bc9f]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);
[5eb9154]310        double calculate_ER();
[0f5bc9f]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;
[f10063e]321        Parameter sldCyl;
322        Parameter sldSolv;
[0f5bc9f]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);
[5eb9154]334        double calculate_ER();
[0f5bc9f]335        double evaluate_rphi(double q, double phi);
336};
[5068697]337class TriaxialEllipsoidModel{
338public:
339        // Model parameters
340        Parameter scale;
341        Parameter semi_axisA;
342        Parameter semi_axisB;
343        Parameter semi_axisC;
[13eb1c4]344        Parameter sldEll;
345        Parameter sldSolv;
[5068697]346        Parameter background;
347        Parameter axis_theta;
348        Parameter axis_phi;
[975ec8e]349        Parameter axis_psi;
350
[5068697]351        // Constructor
352        TriaxialEllipsoidModel();
353
354        // Operators to get I(Q)
355        double operator()(double q);
356        double operator()(double qx, double qy);
[5eb9154]357        double calculate_ER();
[5068697]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;
[f10063e]368        Parameter sldCyl;
369        Parameter sldSolv;
[5068697]370        Parameter background;
[975ec8e]371
[5068697]372        // Constructor
373        FlexibleCylinderModel();
374
375        // Operators to get I(Q)
376        double operator()(double q);
377        double operator()(double qx, double qy);
[5eb9154]378        double calculate_ER();
[5068697]379        double evaluate_rphi(double q, double phi);
380};
381
[c724ccd]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
[5068697]404class StackedDisksModel{
405public:
406        // Model parameters
407        Parameter scale;
[975ec8e]408        Parameter core_thick;
[5068697]409        Parameter radius;
[975ec8e]410        Parameter layer_thick;
[5068697]411        Parameter core_sld;
412        Parameter layer_sld;
413        Parameter solvent_sld;
[975ec8e]414        Parameter n_stacking;
415        Parameter sigma_d;
[5068697]416        Parameter background;
417        Parameter axis_theta;
418        Parameter axis_phi;
[975ec8e]419
[5068697]420        // Constructor
421        StackedDisksModel();
422
423        // Operators to get I(Q)
424        double operator()(double q);
425        double operator()(double qx, double qy);
[5eb9154]426        double calculate_ER();
[5068697]427        double evaluate_rphi(double q, double phi);
428};
[27a0771]429
[34c3020]430class LamellarModel{
431public:
432        // Model parameters
433        Parameter scale;
[975ec8e]434        Parameter bi_thick;
435        Parameter sld_bi;
436        Parameter sld_sol;
[34c3020]437        Parameter background;
[975ec8e]438
[34c3020]439        // Constructor
440        LamellarModel();
441
442        // Operators to get I(Q)
443        double operator()(double q);
444        double operator()(double qx, double qy);
[5eb9154]445        double calculate_ER();
[34c3020]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;
[975ec8e]460
[34c3020]461        // Constructor
462        LamellarFFHGModel();
463
464        // Operators to get I(Q)
465        double operator()(double q);
466        double operator()(double qx, double qy);
[5eb9154]467        double calculate_ER();
[34c3020]468        double evaluate_rphi(double q, double phi);
469
470};
471
472
473
[27a0771]474class LamellarPSModel{
475public:
476        // Model parameters
477        Parameter scale;
478        Parameter spacing;
479        Parameter delta;
[f10063e]480        Parameter sld_bi;
481        Parameter sld_sol;
[27a0771]482        Parameter n_plates;
483        Parameter caille;
484        Parameter background;
[975ec8e]485
[27a0771]486        // Constructor
487        LamellarPSModel();
488
489        // Operators to get I(Q)
490        double operator()(double q);
491        double operator()(double qx, double qy);
[5eb9154]492        double calculate_ER();
[27a0771]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;
[975ec8e]509
[27a0771]510        // Constructor
511        LamellarPSHGModel();
512
513        // Operators to get I(Q)
514        double operator()(double q);
515        double operator()(double qx, double qy);
[5eb9154]516        double calculate_ER();
[27a0771]517        double evaluate_rphi(double q, double phi);
518};
519
[eddff027]520class CoreShellEllipsoidModel{
[975ec8e]521public:
522        // Model parameters
523        Parameter scale;
524        Parameter equat_core;
525        Parameter polar_core;
526        Parameter equat_shell;
527        Parameter polar_shell;
[f10063e]528        Parameter sld_core;
529        Parameter sld_shell;
[975ec8e]530        Parameter sld_solvent;
531        Parameter background;
532        Parameter axis_theta;
533        Parameter axis_phi;
534
535        // Constructor
[eddff027]536        CoreShellEllipsoidModel();
[975ec8e]537
538        // Operators to get I(Q)
539        double operator()(double q);
540        double operator()(double qx, double qy);
[5eb9154]541        double calculate_ER();
[975ec8e]542        double evaluate_rphi(double q, double phi);
543};
544
[27fea3f]545class HollowCylinderModel{
546public:
547        // Model parameters
548        Parameter scale;
549        Parameter core_radius;
[e2afadf]550        Parameter radius;
[27fea3f]551        Parameter length;
[f10063e]552        Parameter sldCyl;
553        Parameter sldSolv;
[27fea3f]554        Parameter background;
555        Parameter axis_theta;
556        Parameter axis_phi;
[975ec8e]557
[27fea3f]558        //Constructor
559        HollowCylinderModel();
[975ec8e]560
[27fea3f]561        //Operators to get I(Q)
562        double operator()(double q);
563        double operator()(double qx , double qy);
[5eb9154]564        double calculate_ER();
[27fea3f]565        double evaluate_rphi(double q, double phi);
566};
[3d25331f]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;
[975ec8e]579
[3d25331f]580        //Constructor
581        MultiShellModel();
[975ec8e]582
[3d25331f]583        //Operators to get I(Q)
584        double operator()(double q);
585        double operator()(double qx , double qy);
[5eb9154]586        double calculate_ER();
[3d25331f]587        double evaluate_rphi(double q, double phi);
588};
589
590class VesicleModel{
591public:
592        // Model parameters
593        Parameter scale;
[e2afadf]594        Parameter radius;
[3d25331f]595        Parameter thickness;
596        Parameter core_sld;
597        Parameter shell_sld;
598        Parameter background;
[975ec8e]599
[3d25331f]600        //Constructor
601        VesicleModel();
[975ec8e]602
[3d25331f]603        //Operators to get I(Q)
604        double operator()(double q);
605        double operator()(double qx , double qy);
[5eb9154]606        double calculate_ER();
[3d25331f]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;
[975ec8e]621
[3d25331f]622        //Constructor
623        BinaryHSModel();
[975ec8e]624
[3d25331f]625        //Operators to get I(Q)
626        double operator()(double q);
627        double operator()(double qx , double qy);
[5eb9154]628        double calculate_ER();
[3d25331f]629        double evaluate_rphi(double q, double phi);
630};
631
[2c4b289]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;
[975ec8e]643
[2c4b289]644        //Constructor
645        BinaryHSPSF11Model();
[975ec8e]646
[2c4b289]647        //Operators to get I(Q)
648        double operator()(double q);
649        double operator()(double qx , double qy);
[5eb9154]650        double calculate_ER();
[2c4b289]651        double evaluate_rphi(double q, double phi);
652};
653
[c724ccd]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***/
[fca6936]712#endif
Note: See TracBrowser for help on using the repository browser.