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

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 c1e865a 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
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"
[fca6936]24}
25
26using namespace std;
27
[af03ddd]28class CylinderModel{
[fca6936]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
[af03ddd]40        CylinderModel();
[fca6936]41
42        // Operators to get I(Q)
43        double operator()(double q);
44        double operator()(double qx, double qy);
[5eb9154]45        double calculate_ER();
[fca6936]46        double evaluate_rphi(double q, double phi);
47};
48
[8a48713]49class ParallelepipedModel{
50public:
[975ec8e]51        // TODO: add 2D
[8a48713]52        // Model parameters
53        Parameter scale;
[2cb89e7]54        Parameter short_a;
[8e36cdd]55        Parameter short_b;
56        Parameter long_c;
[8a48713]57        Parameter contrast;
58        Parameter background;
59        Parameter parallel_theta;
60        Parameter parallel_phi;
[975ec8e]61        Parameter parallel_psi;
[8a48713]62
63        // Constructor
64        ParallelepipedModel();
65
66        // Operators to get I(Q)
67        double operator()(double q);
68        double operator()(double qx, double qy);
[5eb9154]69        double calculate_ER();
[8a48713]70        double evaluate_rphi(double q, double phi);
71};
72
73
[0f5bc9f]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);
[5eb9154]88        double calculate_ER();
[0f5bc9f]89        double evaluate_rphi(double q, double phi);
90};
91
[25579e8]92class HardsphereStructure{
93public:
94        // Model parameters
[5eb9154]95        Parameter effect_radius;
[25579e8]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);
[5eb9154]104        double calculate_ER();
[25579e8]105        double evaluate_rphi(double q, double phi);
106};
107
108class StickyHSStructure{
109public:
110        // Model parameters
[5eb9154]111        Parameter effect_radius;
[25579e8]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);
[5eb9154]122        double calculate_ER();
[25579e8]123        double evaluate_rphi(double q, double phi);
124};
125
126class SquareWellStructure{
127public:
128        // Model parameters
[5eb9154]129        Parameter effect_radius;
[25579e8]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);
[5eb9154]140        double calculate_ER();
[25579e8]141        double evaluate_rphi(double q, double phi);
142};
143
144class HayterMSAStructure{
145public:
146        // Model parameters
[5eb9154]147        Parameter effect_radius;
[25579e8]148        Parameter charge;
149        Parameter volfraction;
150        Parameter temperature;
151        Parameter saltconc;
152        Parameter dielectconst;
[a0782f1]153
[25579e8]154        // Constructor
155        HayterMSAStructure();
156
157        // Operators to get I(Q)
158        double operator()(double q);
159        double operator()(double qx, double qy);
[5eb9154]160        double calculate_ER();
[25579e8]161        double evaluate_rphi(double q, double phi);
162};
163
[a0782f1]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);
[5eb9154]176        double calculate_ER();
[a0782f1]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);
[5eb9154]192        double calculate_ER();
[a0782f1]193        double evaluate_rphi(double q, double phi);
194};
195
[0f5bc9f]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);
[5eb9154]213        double calculate_ER();
[0f5bc9f]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);
[5eb9154]237        double calculate_ER();
[0f5bc9f]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);
[5eb9154]258        double calculate_ER();
[0f5bc9f]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);
[5eb9154]281        double calculate_ER();
[0f5bc9f]282        double evaluate_rphi(double q, double phi);
283};
[5068697]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;
[975ec8e]295        Parameter axis_psi;
296
[5068697]297        // Constructor
298        TriaxialEllipsoidModel();
299
300        // Operators to get I(Q)
301        double operator()(double q);
302        double operator()(double qx, double qy);
[5eb9154]303        double calculate_ER();
[5068697]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;
[975ec8e]318
[5068697]319        // Constructor
320        FlexibleCylinderModel();
321
322        // Operators to get I(Q)
323        double operator()(double q);
324        double operator()(double qx, double qy);
[5eb9154]325        double calculate_ER();
[5068697]326        double evaluate_rphi(double q, double phi);
327};
328
329class StackedDisksModel{
330public:
331        // Model parameters
332        Parameter scale;
[975ec8e]333        Parameter core_thick;
[5068697]334        Parameter radius;
[975ec8e]335        Parameter layer_thick;
[5068697]336        Parameter core_sld;
337        Parameter layer_sld;
338        Parameter solvent_sld;
[975ec8e]339        Parameter n_stacking;
340        Parameter sigma_d;
[5068697]341        Parameter background;
342        Parameter axis_theta;
343        Parameter axis_phi;
[975ec8e]344
[5068697]345        // Constructor
346        StackedDisksModel();
347
348        // Operators to get I(Q)
349        double operator()(double q);
350        double operator()(double qx, double qy);
[5eb9154]351        double calculate_ER();
[5068697]352        double evaluate_rphi(double q, double phi);
353};
[27a0771]354
[34c3020]355class LamellarModel{
356public:
357        // Model parameters
358        Parameter scale;
[975ec8e]359        Parameter bi_thick;
360        Parameter sld_bi;
361        Parameter sld_sol;
[34c3020]362        Parameter background;
[975ec8e]363
[34c3020]364        // Constructor
365        LamellarModel();
366
367        // Operators to get I(Q)
368        double operator()(double q);
369        double operator()(double qx, double qy);
[5eb9154]370        double calculate_ER();
[34c3020]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;
[975ec8e]385
[34c3020]386        // Constructor
387        LamellarFFHGModel();
388
389        // Operators to get I(Q)
390        double operator()(double q);
391        double operator()(double qx, double qy);
[5eb9154]392        double calculate_ER();
[34c3020]393        double evaluate_rphi(double q, double phi);
394
395};
396
397
398
[27a0771]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;
[975ec8e]409
[27a0771]410        // Constructor
411        LamellarPSModel();
412
413        // Operators to get I(Q)
414        double operator()(double q);
415        double operator()(double qx, double qy);
[5eb9154]416        double calculate_ER();
[27a0771]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;
[975ec8e]433
[27a0771]434        // Constructor
435        LamellarPSHGModel();
436
437        // Operators to get I(Q)
438        double operator()(double q);
439        double operator()(double qx, double qy);
[5eb9154]440        double calculate_ER();
[27a0771]441        double evaluate_rphi(double q, double phi);
442};
443
[eddff027]444class CoreShellEllipsoidModel{
[975ec8e]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
[eddff027]459        CoreShellEllipsoidModel();
[975ec8e]460
461        // Operators to get I(Q)
462        double operator()(double q);
463        double operator()(double qx, double qy);
[5eb9154]464        double calculate_ER();
[975ec8e]465        double evaluate_rphi(double q, double phi);
466};
467
[27fea3f]468class HollowCylinderModel{
469public:
470        // Model parameters
471        Parameter scale;
472        Parameter core_radius;
[e2afadf]473        Parameter radius;
[27fea3f]474        Parameter length;
475        Parameter contrast;
476        Parameter background;
477        Parameter axis_theta;
478        Parameter axis_phi;
[975ec8e]479
[27fea3f]480        //Constructor
481        HollowCylinderModel();
[975ec8e]482
[27fea3f]483        //Operators to get I(Q)
484        double operator()(double q);
485        double operator()(double qx , double qy);
[5eb9154]486        double calculate_ER();
[27fea3f]487        double evaluate_rphi(double q, double phi);
488};
[3d25331f]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;
[975ec8e]501
[3d25331f]502        //Constructor
503        MultiShellModel();
[975ec8e]504
[3d25331f]505        //Operators to get I(Q)
506        double operator()(double q);
507        double operator()(double qx , double qy);
[5eb9154]508        double calculate_ER();
[3d25331f]509        double evaluate_rphi(double q, double phi);
510};
511
512class VesicleModel{
513public:
514        // Model parameters
515        Parameter scale;
[e2afadf]516        Parameter radius;
[3d25331f]517        Parameter thickness;
518        Parameter core_sld;
519        Parameter shell_sld;
520        Parameter background;
[975ec8e]521
[3d25331f]522        //Constructor
523        VesicleModel();
[975ec8e]524
[3d25331f]525        //Operators to get I(Q)
526        double operator()(double q);
527        double operator()(double qx , double qy);
[5eb9154]528        double calculate_ER();
[3d25331f]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;
[975ec8e]543
[3d25331f]544        //Constructor
545        BinaryHSModel();
[975ec8e]546
[3d25331f]547        //Operators to get I(Q)
548        double operator()(double q);
549        double operator()(double qx , double qy);
[5eb9154]550        double calculate_ER();
[3d25331f]551        double evaluate_rphi(double q, double phi);
552};
553
[2c4b289]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;
[975ec8e]565
[2c4b289]566        //Constructor
567        BinaryHSPSF11Model();
[975ec8e]568
[2c4b289]569        //Operators to get I(Q)
570        double operator()(double q);
571        double operator()(double qx , double qy);
[5eb9154]572        double calculate_ER();
[2c4b289]573        double evaluate_rphi(double q, double phi);
574};
575
[fca6936]576#endif
Note: See TracBrowser for help on using the repository browser.