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

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 7ef319e was 5eb9154, checked in by Jae Cho <jhjcho@…>, 15 years ago

calculation of the effective radius are added

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