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

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 2339ff1e was c1c29b6, checked in by Jae Cho <jhjcho@…>, 15 years ago

some corrections and removed polydispersity from inside of function and set dQ =0

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