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

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

Updated the definition of SLD params according to new libigor functions

  • Property mode set to 100644
File size: 11.9 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}
25
26using namespace std;
27
28class CylinderModel{
29public:
30        // Model parameters
31        Parameter radius;
32        Parameter scale;
33        Parameter length;
34        Parameter sldCyl;
35        Parameter sldSolv;
36        Parameter background;
37        Parameter cyl_theta;
38        Parameter cyl_phi;
39
40        // Constructor
41        CylinderModel();
42
43        // Operators to get I(Q)
44        double operator()(double q);
45        double operator()(double qx, double qy);
46        double calculate_ER();
47        double evaluate_rphi(double q, double phi);
48};
49
50class ParallelepipedModel{
51public:
52        // TODO: add 2D
53        // Model parameters
54        Parameter scale;
55        Parameter short_a;
56        Parameter short_b;
57        Parameter long_c;
58        Parameter sldPipe;
59        Parameter sldSolv;
60        Parameter background;
61        Parameter parallel_theta;
62        Parameter parallel_phi;
63        Parameter parallel_psi;
64
65        // Constructor
66        ParallelepipedModel();
67
68        // Operators to get I(Q)
69        double operator()(double q);
70        double operator()(double qx, double qy);
71        double calculate_ER();
72        double evaluate_rphi(double q, double phi);
73};
74
75
76class SphereModel{
77public:
78        // Model parameters
79        Parameter radius;
80        Parameter scale;
81        Parameter sldSph;
82        Parameter sldSolv;
83        Parameter background;
84
85        // Constructor
86        SphereModel();
87
88        // Operators to get I(Q)
89        double operator()(double q);
90        double operator()(double qx, double qy);
91        double calculate_ER();
92        double evaluate_rphi(double q, double phi);
93};
94
95class HardsphereStructure{
96public:
97        // Model parameters
98        Parameter effect_radius;
99        Parameter volfraction;
100
101        // Constructor
102        HardsphereStructure();
103
104        // Operators to get I(Q)
105        double operator()(double q);
106        double operator()(double qx, double qy);
107        double calculate_ER();
108        double evaluate_rphi(double q, double phi);
109};
110
111class StickyHSStructure{
112public:
113        // Model parameters
114        Parameter effect_radius;
115        Parameter volfraction;
116        Parameter perturb;
117        Parameter stickiness;
118
119        // Constructor
120        StickyHSStructure();
121
122        // Operators to get I(Q)
123        double operator()(double q);
124        double operator()(double qx, double qy);
125        double calculate_ER();
126        double evaluate_rphi(double q, double phi);
127};
128
129class SquareWellStructure{
130public:
131        // Model parameters
132        Parameter effect_radius;
133        Parameter volfraction;
134        Parameter welldepth;
135        Parameter wellwidth;
136
137        // Constructor
138        SquareWellStructure();
139
140        // Operators to get I(Q)
141        double operator()(double q);
142        double operator()(double qx, double qy);
143        double calculate_ER();
144        double evaluate_rphi(double q, double phi);
145};
146
147class HayterMSAStructure{
148public:
149        // Model parameters
150        Parameter effect_radius;
151        Parameter charge;
152        Parameter volfraction;
153        Parameter temperature;
154        Parameter saltconc;
155        Parameter dielectconst;
156
157        // Constructor
158        HayterMSAStructure();
159
160        // Operators to get I(Q)
161        double operator()(double q);
162        double operator()(double qx, double qy);
163        double calculate_ER();
164        double evaluate_rphi(double q, double phi);
165};
166
167class DiamEllipFunc{
168public:
169        // Model parameters
170        Parameter radius_a;
171        Parameter radius_b;
172
173        // Constructor
174        DiamEllipFunc();
175
176        // Operators to get I(Q)
177        double operator()(double q);
178        double operator()(double qx, double qy);
179        double calculate_ER();
180        double evaluate_rphi(double q, double phi);
181};
182
183class DiamCylFunc{
184public:
185        // Model parameters
186        Parameter radius;
187        Parameter length;
188
189        // Constructor
190        DiamCylFunc();
191
192        // Operators to get I(Q)
193        double operator()(double q);
194        double operator()(double qx, double qy);
195        double calculate_ER();
196        double evaluate_rphi(double q, double phi);
197};
198
199class CoreShellModel{
200public:
201        // Model parameters
202        Parameter radius;
203        Parameter scale;
204        Parameter thickness;
205        Parameter core_sld;
206        Parameter shell_sld;
207        Parameter solvent_sld;
208        Parameter background;
209
210        // Constructor
211        CoreShellModel();
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 CoreShellCylinderModel{
221public:
222        // Model parameters
223        Parameter radius;
224        Parameter scale;
225        Parameter thickness;
226        Parameter length;
227        Parameter core_sld;
228        Parameter shell_sld;
229        Parameter solvent_sld;
230        Parameter background;
231        Parameter axis_theta;
232        Parameter axis_phi;
233
234        // Constructor
235        CoreShellCylinderModel();
236
237        // Operators to get I(Q)
238        double operator()(double q);
239        double operator()(double qx, double qy);
240        double calculate_ER();
241        double evaluate_rphi(double q, double phi);
242};
243
244class EllipsoidModel{
245public:
246        // Model parameters
247        Parameter radius_a;
248        Parameter scale;
249        Parameter radius_b;
250        Parameter sldEll;
251        Parameter sldSolv;
252        Parameter background;
253        Parameter axis_theta;
254        Parameter axis_phi;
255
256        // Constructor
257        EllipsoidModel();
258
259        // Operators to get I(Q)
260        double operator()(double q);
261        double operator()(double qx, double qy);
262        double calculate_ER();
263        double evaluate_rphi(double q, double phi);
264};
265
266class EllipticalCylinderModel{
267public:
268        // Model parameters
269        Parameter r_minor;
270        Parameter scale;
271        Parameter r_ratio;
272        Parameter length;
273        Parameter sldCyl;
274        Parameter sldSolv;
275        Parameter background;
276        Parameter cyl_theta;
277        Parameter cyl_phi;
278        Parameter cyl_psi;
279
280        // Constructor
281        EllipticalCylinderModel();
282
283        // Operators to get I(Q)
284        double operator()(double q);
285        double operator()(double qx, double qy);
286        double calculate_ER();
287        double evaluate_rphi(double q, double phi);
288};
289class TriaxialEllipsoidModel{
290public:
291        // Model parameters
292        Parameter scale;
293        Parameter semi_axisA;
294        Parameter semi_axisB;
295        Parameter semi_axisC;
296        Parameter contrast;
297        Parameter background;
298        Parameter axis_theta;
299        Parameter axis_phi;
300        Parameter axis_psi;
301
302        // Constructor
303        TriaxialEllipsoidModel();
304
305        // Operators to get I(Q)
306        double operator()(double q);
307        double operator()(double qx, double qy);
308        double calculate_ER();
309        double evaluate_rphi(double q, double phi);
310};
311
312class FlexibleCylinderModel{
313public:
314        // Model parameters
315        Parameter scale;
316        Parameter length;
317        Parameter kuhn_length;
318        Parameter radius;
319        Parameter sldCyl;
320        Parameter sldSolv;
321        Parameter background;
322        Parameter axis_theta;
323        Parameter axis_phi;
324
325        // Constructor
326        FlexibleCylinderModel();
327
328        // Operators to get I(Q)
329        double operator()(double q);
330        double operator()(double qx, double qy);
331        double calculate_ER();
332        double evaluate_rphi(double q, double phi);
333};
334
335class StackedDisksModel{
336public:
337        // Model parameters
338        Parameter scale;
339        Parameter core_thick;
340        Parameter radius;
341        Parameter layer_thick;
342        Parameter core_sld;
343        Parameter layer_sld;
344        Parameter solvent_sld;
345        Parameter n_stacking;
346        Parameter sigma_d;
347        Parameter background;
348        Parameter axis_theta;
349        Parameter axis_phi;
350
351        // Constructor
352        StackedDisksModel();
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 LamellarModel{
362public:
363        // Model parameters
364        Parameter scale;
365        Parameter bi_thick;
366        Parameter sld_bi;
367        Parameter sld_sol;
368        Parameter background;
369
370        // Constructor
371        LamellarModel();
372
373        // Operators to get I(Q)
374        double operator()(double q);
375        double operator()(double qx, double qy);
376        double calculate_ER();
377        double evaluate_rphi(double q, double phi);
378
379};
380
381class LamellarFFHGModel{
382public:
383        // Model parameters
384        Parameter scale;
385        Parameter t_length;
386        Parameter h_thickness;
387        Parameter sld_tail;
388        Parameter sld_head;
389        Parameter sld_solvent;
390        Parameter background;
391
392        // Constructor
393        LamellarFFHGModel();
394
395        // Operators to get I(Q)
396        double operator()(double q);
397        double operator()(double qx, double qy);
398        double calculate_ER();
399        double evaluate_rphi(double q, double phi);
400
401};
402
403
404
405class LamellarPSModel{
406public:
407        // Model parameters
408        Parameter scale;
409        Parameter spacing;
410        Parameter delta;
411        Parameter sld_bi;
412        Parameter sld_sol;
413        Parameter n_plates;
414        Parameter caille;
415        Parameter background;
416
417        // Constructor
418        LamellarPSModel();
419
420        // Operators to get I(Q)
421        double operator()(double q);
422        double operator()(double qx, double qy);
423        double calculate_ER();
424        double evaluate_rphi(double q, double phi);
425};
426
427class LamellarPSHGModel{
428public:
429        // Model parameters
430        Parameter scale;
431        Parameter spacing;
432        Parameter deltaT;
433        Parameter deltaH;
434        Parameter sld_tail;
435        Parameter sld_head;
436        Parameter sld_solvent;
437        Parameter n_plates;
438        Parameter caille;
439        Parameter background;
440
441        // Constructor
442        LamellarPSHGModel();
443
444        // Operators to get I(Q)
445        double operator()(double q);
446        double operator()(double qx, double qy);
447        double calculate_ER();
448        double evaluate_rphi(double q, double phi);
449};
450
451class CoreShellEllipsoidModel{
452public:
453        // Model parameters
454        Parameter scale;
455        Parameter equat_core;
456        Parameter polar_core;
457        Parameter equat_shell;
458        Parameter polar_shell;
459        Parameter sld_core;
460        Parameter sld_shell;
461        Parameter sld_solvent;
462        Parameter background;
463        Parameter axis_theta;
464        Parameter axis_phi;
465
466        // Constructor
467        CoreShellEllipsoidModel();
468
469        // Operators to get I(Q)
470        double operator()(double q);
471        double operator()(double qx, double qy);
472        double calculate_ER();
473        double evaluate_rphi(double q, double phi);
474};
475
476class HollowCylinderModel{
477public:
478        // Model parameters
479        Parameter scale;
480        Parameter core_radius;
481        Parameter radius;
482        Parameter length;
483        Parameter sldCyl;
484        Parameter sldSolv;
485        Parameter background;
486        Parameter axis_theta;
487        Parameter axis_phi;
488
489        //Constructor
490        HollowCylinderModel();
491
492        //Operators to get I(Q)
493        double operator()(double q);
494        double operator()(double qx , double qy);
495        double calculate_ER();
496        double evaluate_rphi(double q, double phi);
497};
498
499class MultiShellModel{
500public:
501        // Model parameters
502        Parameter scale;
503        Parameter core_radius;
504        Parameter s_thickness;
505        Parameter w_thickness;
506        Parameter core_sld;
507        Parameter shell_sld;
508        Parameter n_pairs;
509        Parameter background;
510
511        //Constructor
512        MultiShellModel();
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
521class VesicleModel{
522public:
523        // Model parameters
524        Parameter scale;
525        Parameter radius;
526        Parameter thickness;
527        Parameter core_sld;
528        Parameter shell_sld;
529        Parameter background;
530
531        //Constructor
532        VesicleModel();
533
534        //Operators to get I(Q)
535        double operator()(double q);
536        double operator()(double qx , double qy);
537        double calculate_ER();
538        double evaluate_rphi(double q, double phi);
539};
540
541class BinaryHSModel{
542public:
543        // Model parameters
544        Parameter l_radius;
545        Parameter s_radius;
546        Parameter vol_frac_ls;
547        Parameter vol_frac_ss;
548        Parameter ls_sld;
549        Parameter ss_sld;
550        Parameter solvent_sld;
551        Parameter background;
552
553        //Constructor
554        BinaryHSModel();
555
556        //Operators to get I(Q)
557        double operator()(double q);
558        double operator()(double qx , double qy);
559        double calculate_ER();
560        double evaluate_rphi(double q, double phi);
561};
562
563class BinaryHSPSF11Model{
564public:
565        // Model parameters
566        Parameter l_radius;
567        Parameter s_radius;
568        Parameter vol_frac_ls;
569        Parameter vol_frac_ss;
570        Parameter ls_sld;
571        Parameter ss_sld;
572        Parameter solvent_sld;
573        Parameter background;
574
575        //Constructor
576        BinaryHSPSF11Model();
577
578        //Operators to get I(Q)
579        double operator()(double q);
580        double operator()(double qx , double qy);
581        double calculate_ER();
582        double evaluate_rphi(double q, double phi);
583};
584
585#endif
Note: See TracBrowser for help on using the repository browser.