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

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

More models added and correction of Wrappergenerator on model parameter value precision

  • 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"
25        #include "polyexclvol.h"
[fca6936]26}
27
28using namespace std;
29
[af03ddd]30class CylinderModel{
[fca6936]31public:
32        // Model parameters
33        Parameter radius;
34        Parameter scale;
35        Parameter length;
[f10063e]36        Parameter sldCyl;
37        Parameter sldSolv;
[fca6936]38        Parameter background;
39        Parameter cyl_theta;
40        Parameter cyl_phi;
41
42        // Constructor
[af03ddd]43        CylinderModel();
[fca6936]44
45        // Operators to get I(Q)
46        double operator()(double q);
47        double operator()(double qx, double qy);
[5eb9154]48        double calculate_ER();
[fca6936]49        double evaluate_rphi(double q, double phi);
50};
51
[8a48713]52class ParallelepipedModel{
53public:
[975ec8e]54        // TODO: add 2D
[8a48713]55        // Model parameters
56        Parameter scale;
[2cb89e7]57        Parameter short_a;
[8e36cdd]58        Parameter short_b;
59        Parameter long_c;
[f10063e]60        Parameter sldPipe;
61        Parameter sldSolv;
[8a48713]62        Parameter background;
63        Parameter parallel_theta;
64        Parameter parallel_phi;
[975ec8e]65        Parameter parallel_psi;
[8a48713]66
67        // Constructor
68        ParallelepipedModel();
69
70        // Operators to get I(Q)
71        double operator()(double q);
72        double operator()(double qx, double qy);
[5eb9154]73        double calculate_ER();
[8a48713]74        double evaluate_rphi(double q, double phi);
75};
76
77
[0f5bc9f]78class SphereModel{
79public:
80        // Model parameters
81        Parameter radius;
82        Parameter scale;
[f10063e]83        Parameter sldSph;
84        Parameter sldSolv;
[0f5bc9f]85        Parameter background;
86
87        // Constructor
88        SphereModel();
89
90        // Operators to get I(Q)
91        double operator()(double q);
92        double operator()(double qx, double qy);
[5eb9154]93        double calculate_ER();
[0f5bc9f]94        double evaluate_rphi(double q, double phi);
95};
96
[c724ccd]97class FuzzySphereModel{
98public:
99        // Model parameters
100        Parameter radius;
101        Parameter scale;
102        Parameter fuzziness;
103        Parameter sldSph;
104        Parameter sldSolv;
105        Parameter background;
106
107        // Constructor
108        FuzzySphereModel();
109
110        // Operators to get I(Q)
111        double operator()(double q);
112        double operator()(double qx, double qy);
113        double calculate_ER();
114        double evaluate_rphi(double q, double phi);
115};
116
[25579e8]117class HardsphereStructure{
118public:
119        // Model parameters
[5eb9154]120        Parameter effect_radius;
[25579e8]121        Parameter volfraction;
122
123        // Constructor
124        HardsphereStructure();
125
126        // Operators to get I(Q)
127        double operator()(double q);
128        double operator()(double qx, double qy);
[5eb9154]129        double calculate_ER();
[25579e8]130        double evaluate_rphi(double q, double phi);
131};
132
133class StickyHSStructure{
134public:
135        // Model parameters
[5eb9154]136        Parameter effect_radius;
[25579e8]137        Parameter volfraction;
138        Parameter perturb;
139        Parameter stickiness;
140
141        // Constructor
142        StickyHSStructure();
143
144        // Operators to get I(Q)
145        double operator()(double q);
146        double operator()(double qx, double qy);
[5eb9154]147        double calculate_ER();
[25579e8]148        double evaluate_rphi(double q, double phi);
149};
150
151class SquareWellStructure{
152public:
153        // Model parameters
[5eb9154]154        Parameter effect_radius;
[25579e8]155        Parameter volfraction;
156        Parameter welldepth;
157        Parameter wellwidth;
158
159        // Constructor
160        SquareWellStructure();
161
162        // Operators to get I(Q)
163        double operator()(double q);
164        double operator()(double qx, double qy);
[5eb9154]165        double calculate_ER();
[25579e8]166        double evaluate_rphi(double q, double phi);
167};
168
169class HayterMSAStructure{
170public:
171        // Model parameters
[5eb9154]172        Parameter effect_radius;
[25579e8]173        Parameter charge;
174        Parameter volfraction;
175        Parameter temperature;
176        Parameter saltconc;
177        Parameter dielectconst;
[a0782f1]178
[25579e8]179        // Constructor
180        HayterMSAStructure();
181
182        // Operators to get I(Q)
183        double operator()(double q);
184        double operator()(double qx, double qy);
[5eb9154]185        double calculate_ER();
[25579e8]186        double evaluate_rphi(double q, double phi);
187};
188
[a0782f1]189class DiamEllipFunc{
190public:
191        // Model parameters
192        Parameter radius_a;
193        Parameter radius_b;
194
195        // Constructor
196        DiamEllipFunc();
197
198        // Operators to get I(Q)
199        double operator()(double q);
200        double operator()(double qx, double qy);
[5eb9154]201        double calculate_ER();
[a0782f1]202        double evaluate_rphi(double q, double phi);
203};
204
205class DiamCylFunc{
206public:
207        // Model parameters
208        Parameter radius;
209        Parameter length;
210
211        // Constructor
212        DiamCylFunc();
213
214        // Operators to get I(Q)
215        double operator()(double q);
216        double operator()(double qx, double qy);
[5eb9154]217        double calculate_ER();
[a0782f1]218        double evaluate_rphi(double q, double phi);
219};
220
[0f5bc9f]221class CoreShellModel{
222public:
223        // Model parameters
224        Parameter radius;
225        Parameter scale;
226        Parameter thickness;
227        Parameter core_sld;
228        Parameter shell_sld;
229        Parameter solvent_sld;
230        Parameter background;
231
232        // Constructor
233        CoreShellModel();
234
235        // Operators to get I(Q)
236        double operator()(double q);
237        double operator()(double qx, double qy);
[5eb9154]238        double calculate_ER();
[0f5bc9f]239        double evaluate_rphi(double q, double phi);
240};
241
[c724ccd]242class CoreFourShellModel{
243public:
244        // Model parameters
245        Parameter scale;
246        Parameter rad_core;
247        Parameter sld_core;
248        Parameter thick_shell1;
249        Parameter sld_shell1;
250        Parameter thick_shell2;
251        Parameter sld_shell2;
252        Parameter thick_shell3;
253        Parameter sld_shell3;
254        Parameter thick_shell4;
255        Parameter sld_shell4;
256        Parameter sld_solv;
257        Parameter background;
258
259        // Constructor
260        CoreFourShellModel();
261
262        // Operators to get I(Q)
263        double operator()(double q);
264        double operator()(double qx, double qy);
265        double calculate_ER();
266        double evaluate_rphi(double q, double phi);
267};
268
[0f5bc9f]269class CoreShellCylinderModel{
270public:
271        // Model parameters
272        Parameter radius;
273        Parameter scale;
274        Parameter thickness;
275        Parameter length;
276        Parameter core_sld;
277        Parameter shell_sld;
278        Parameter solvent_sld;
279        Parameter background;
280        Parameter axis_theta;
281        Parameter axis_phi;
282
283        // Constructor
284        CoreShellCylinderModel();
285
286        // Operators to get I(Q)
287        double operator()(double q);
288        double operator()(double qx, double qy);
[5eb9154]289        double calculate_ER();
[0f5bc9f]290        double evaluate_rphi(double q, double phi);
291};
292
293class EllipsoidModel{
294public:
295        // Model parameters
296        Parameter radius_a;
297        Parameter scale;
298        Parameter radius_b;
[f10063e]299        Parameter sldEll;
300        Parameter sldSolv;
[0f5bc9f]301        Parameter background;
302        Parameter axis_theta;
303        Parameter axis_phi;
304
305        // Constructor
306        EllipsoidModel();
307
308        // Operators to get I(Q)
309        double operator()(double q);
310        double operator()(double qx, double qy);
[5eb9154]311        double calculate_ER();
[0f5bc9f]312        double evaluate_rphi(double q, double phi);
313};
314
315class EllipticalCylinderModel{
316public:
317        // Model parameters
318        Parameter r_minor;
319        Parameter scale;
320        Parameter r_ratio;
321        Parameter length;
[f10063e]322        Parameter sldCyl;
323        Parameter sldSolv;
[0f5bc9f]324        Parameter background;
325        Parameter cyl_theta;
326        Parameter cyl_phi;
327        Parameter cyl_psi;
328
329        // Constructor
330        EllipticalCylinderModel();
331
332        // Operators to get I(Q)
333        double operator()(double q);
334        double operator()(double qx, double qy);
[5eb9154]335        double calculate_ER();
[0f5bc9f]336        double evaluate_rphi(double q, double phi);
337};
[5068697]338class TriaxialEllipsoidModel{
339public:
340        // Model parameters
341        Parameter scale;
342        Parameter semi_axisA;
343        Parameter semi_axisB;
344        Parameter semi_axisC;
345        Parameter contrast;
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.