source: sans/Analysis/branches/ajj_23APR07/XOPs/SANSAnalysis/XOP/SANSAnalysis.r @ 112

Last change on this file since 112 was 112, checked in by ajj, 15 years ago

Added 2D Cylinder function from M Doucet to library and to XOP code.

Call in IGOR as Output = Cylinder_2D_Dist(params,Q_x[p],Q_y[q])

Call in C as dist_cylinder_2D(params,qx,qy)

  • Property svn:executable set to *
File size: 17.3 KB
Line 
1/*      CylinderFit.r -- resources for CylinderFit
2//now compatible with Project Builder
3*/
4
5#include "XOPStandardHeaders.r"
6
7resource 'vers' (1) {                                           /* XOP version info */
80x01, 0x02, final, 0x00, 0,                             /* version bytes and country integer */
9"1.02",
10"1.02, © 1996 WaveMetrics, Inc., all rights reserved."
11};
12
13resource 'vers' (2) {                                           /* Igor version info */
140x02, 0x00, release, 0x00, 0,                   /* version bytes and country integer */
15"2.00",
16"(for Igor 2.00 or later)"
17};
18
19resource 'STR#' (1100) {                                        /* custom error messages */
20{
21        /* [1] */
22        "CylinderFit requires Igor Pro 2.0 or later",
23        /* [2] */
24        "Wave does not exist.",
25        /* [3] */
26        "Coefficient wave must be single or double precision floating point.",
27}
28};
29
30resource 'STR#' (1101) {                                        // Misc strings for XOP.
31{
32        "-1",                                                           // -1 means we don't want to add a menu item.
33        "No Menu Item",                                         // Igor ignores item 2 because item 1 is -1.
34        "CylinderFit Help",                                     // Name of XOP's help file.
35}
36};
37
38resource 'XOPI' (1100) {
39        XOP_VERSION,                    /* Tells Igor XOP Toolkit version used to compile XOP */
40        DEV_SYS_CODE,                   /* Identifies MPW C or THINK C. See XOPTypes.r. */
41        0,                              /* this XOP requires hierarchichal menus */
42        0,                              /* this XOP does NOT require a coprocessor */
43        XOP_TOOLKIT_VERSION,            /* this XOP does not require an MMU */
44};
45
46resource 'XOPF' (1100) {
47{
48/// Sphere functions           
49                "MultiShellX",                                          /* function name */
50                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
51                NT_FP64,                                                        /* return value type */                 
52                {
53                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
54                        NT_FP64,                                                /* double precision x */
55                },
56
57                "PolyMultiShellX",                                              /* function name */
58                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
59                NT_FP64,                                                        /* return value type */                 
60                {
61                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
62                        NT_FP64,                                                /* double precision x */
63                },
64
65                "SphereFormX",                                          /* function name */
66                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
67                NT_FP64,                                                        /* return value type */                 
68                {
69                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
70                        NT_FP64,                                                /* double precision x */
71                },
72
73                "CoreShellFormX",                                               /* function name */
74                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
75                NT_FP64,                                                        /* return value type */                 
76                {
77                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
78                        NT_FP64,                                                /* double precision x */
79                },
80
81                "PolyCoreFormX",                                                /* function name */
82                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
83                NT_FP64,                                                        /* return value type */                 
84                {
85                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
86                        NT_FP64,                                                /* double precision x */
87                },
88
89                "PolyCoreShellRatioX",                                          /* function name */
90                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
91                NT_FP64,                                                        /* return value type */                 
92                {
93                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
94                        NT_FP64,                                                /* double precision x */
95                },
96
97                "VesicleFormX",                                         /* function name */
98                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
99                NT_FP64,                                                        /* return value type */                 
100                {
101                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
102                        NT_FP64,                                                /* double precision x */
103                },
104
105                "SchulzSpheresX",                                               /* function name */
106                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
107                NT_FP64,                                                        /* return value type */                 
108                {
109                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
110                        NT_FP64,                                                /* double precision x */
111                },
112
113                "PolyRectSpheresX",                                             /* function name */
114                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
115                NT_FP64,                                                        /* return value type */                 
116                {
117                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
118                        NT_FP64,                                                /* double precision x */
119                },
120
121                "PolyHardSphereIntensityX",                                             /* function name */
122                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
123                NT_FP64,                                                        /* return value type */                 
124                {
125                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
126                        NT_FP64,                                                /* double precision x */
127                },
128
129                "BimodalSchulzSpheresX",                                                /* function name */
130                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
131                NT_FP64,                                                        /* return value type */                 
132                {
133                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
134                        NT_FP64,                                                /* double precision x */
135                },
136
137                "GaussPolySphereX",                                             /* function name */
138                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
139                NT_FP64,                                                        /* return value type */                 
140                {
141                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
142                        NT_FP64,                                                /* double precision x */
143                },
144
145                "LogNormalPolySphereX",                                         /* function name */
146                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
147                NT_FP64,                                                        /* return value type */                 
148                {
149                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
150                        NT_FP64,                                                /* double precision x */
151                },
152
153                "BinaryHSX",                                            /* function name */
154                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
155                NT_FP64,                                                        /* return value type */                 
156                {
157                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
158                        NT_FP64,                                                /* double precision x */
159                },
160
161                "BinaryHS_PSF11X",                                              /* function name */
162                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
163                NT_FP64,                                                        /* return value type */                 
164                {
165                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
166                        NT_FP64,                                                /* double precision x */
167                },
168
169                "BinaryHS_PSF12X",                                              /* function name */
170                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
171                NT_FP64,                                                        /* return value type */                 
172                {
173                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
174                        NT_FP64,                                                /* double precision x */
175                },
176
177                "BinaryHS_PSF22X",                                              /* function name */
178                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
179                NT_FP64,                                                        /* return value type */                 
180                {
181                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
182                        NT_FP64,                                                /* double precision x */
183                },
184/// Cylinder functions
185                "CylinderFormX",                                                /* function name */
186                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
187                NT_FP64,                                                /* return value type */                 
188                {
189                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
190                        NT_FP64,                                        /* double precision x */
191                },
192
193                "EllipCyl76X",                                  /* function name */
194                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
195                NT_FP64,                                                /* return value type */                 
196                {
197                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
198                        NT_FP64,                                        /* double precision x */
199                },
200
201                "EllipCyl20X",                                  /* function name */
202                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
203                NT_FP64,                                                /* return value type */                 
204                {
205                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
206                        NT_FP64,                                        /* double precision x */
207                },
208
209                "TriaxialEllipsoidX",
210                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
211                NT_FP64,                                                /* return value type */                 
212                {
213                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
214                        NT_FP64,                                        /* double precision x */
215                },
216
217                "ParallelepipedX",
218                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
219                NT_FP64,                                                /* return value type */                 
220                {
221                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
222                        NT_FP64,                                        /* double precision x */
223                },
224
225                "HollowCylinderX",
226                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
227                NT_FP64,                                                /* return value type */                 
228                {
229                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
230                        NT_FP64,                                        /* double precision x */
231                },
232
233                "EllipsoidFormX",
234                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
235                NT_FP64,                                                /* return value type */                 
236                {
237                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
238                        NT_FP64,                                        /* double precision x */
239                },
240
241                "Cyl_PolyRadiusX",
242                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
243                NT_FP64,                                                /* return value type */                 
244                {
245                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
246                        NT_FP64,                                        /* double precision x */
247                },
248
249                "Cyl_PolyLengthX",
250                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
251                NT_FP64,                                                /* return value type */                 
252                {
253                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
254                        NT_FP64,                                        /* double precision x */
255                },
256
257                "CoreShellCylinderX",
258                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
259                NT_FP64,                                                /* return value type */                 
260                {
261                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
262                        NT_FP64,                                        /* double precision x */
263                },
264
265                "OblateFormX",
266                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
267                NT_FP64,                                                /* return value type */                 
268                {
269                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
270                        NT_FP64,                                        /* double precision x */
271                },
272
273                "ProlateFormX",
274                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
275                NT_FP64,                                                /* return value type */                 
276                {
277                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
278                        NT_FP64,                                        /* double precision x */
279                },
280
281                "FlexExclVolCylX",
282                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
283                NT_FP64,                                                /* return value type */                 
284                {
285                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
286                        NT_FP64,                                        /* double precision x */
287                },
288
289                "FlexCyl_PolyLenX",
290                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
291                NT_FP64,                                                /* return value type */                 
292                {
293                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
294                        NT_FP64,                                        /* double precision x */
295                },
296
297                "FlexCyl_PolyRadX",
298                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
299                NT_FP64,                                                /* return value type */                 
300                {
301                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
302                        NT_FP64,                                        /* double precision x */
303                },
304
305                "FlexCyl_EllipX",
306                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
307                NT_FP64,                                                /* return value type */                 
308                {
309                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
310                        NT_FP64,                                        /* double precision x */
311                },
312
313                "PolyCoShCylinderX",
314                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
315                NT_FP64,                                                /* return value type */                 
316                {
317                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
318                        NT_FP64,                                        /* double precision x */
319                },
320
321                "StackedDiscsX",
322                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
323                NT_FP64,                                                /* return value type */                 
324                {
325                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
326                        NT_FP64,                                        /* double precision x */
327                },
328
329                "LamellarFFX",
330                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
331                NT_FP64,                                                /* return value type */                 
332                {
333                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
334                        NT_FP64,                                        /* double precision x */
335                },
336
337                "LamellarFF_HGX",
338                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
339                NT_FP64,                                                /* return value type */                 
340                {
341                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
342                        NT_FP64,                                        /* double precision x */
343                },
344
345                "LamellarPSX",
346                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
347                NT_FP64,                                                /* return value type */                 
348                {
349                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
350                        NT_FP64,                                        /* double precision x */
351                },
352
353                "LamellarPS_HGX",
354                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
355                NT_FP64,                                                /* return value type */                 
356                {
357                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
358                        NT_FP64,                                        /* double precision x */
359                },
360/// Two phase models
361                "TeubnerStreyModelX",                                           /* function name */
362                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
363                NT_FP64,                                                        /* return value type */                 
364                {
365                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
366                        NT_FP64,                                                /* double precision x */
367                },
368
369                "Power_Law_ModelX",                                             /* function name */
370                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
371                NT_FP64,                                                        /* return value type */                 
372                {
373                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
374                        NT_FP64,                                                /* double precision x */
375                },
376
377                "Peak_Lorentz_ModelX",                                          /* function name */
378                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
379                NT_FP64,                                                        /* return value type */                 
380                {
381                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
382                        NT_FP64,                                                /* double precision x */
383                },
384
385                "Peak_Gauss_ModelX",                                            /* function name */
386                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
387                NT_FP64,                                                        /* return value type */                 
388                {
389                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
390                        NT_FP64,                                                /* double precision x */
391                },
392
393                "Lorentz_ModelX",                                               /* function name */
394                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
395                NT_FP64,                                                        /* return value type */                 
396                {
397                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
398                        NT_FP64,                                                /* double precision x */
399                },
400
401                "FractalX",                                             /* function name */
402                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
403                NT_FP64,                                                        /* return value type */                 
404                {
405                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
406                        NT_FP64,                                                /* double precision x */
407                },
408
409                "DAB_ModelX",                                           /* function name */
410                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
411                NT_FP64,                                                        /* return value type */                 
412                {
413                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
414                        NT_FP64,                                                /* double precision x */
415                },
416
417                "OneLevelX",                                            /* function name */
418                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
419                NT_FP64,                                                        /* return value type */                 
420                {
421                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
422                        NT_FP64,                                                /* double precision x */
423                },
424
425                "TwoLevelX",                                            /* function name */
426                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
427                NT_FP64,                                                        /* return value type */                 
428                {
429                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
430                        NT_FP64,                                                /* double precision x */
431                },
432
433                "ThreeLevelX",                                          /* function name */
434                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
435                NT_FP64,                                                        /* return value type */                 
436                {
437                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
438                        NT_FP64,                                                /* double precision x */
439                },
440
441                "FourLevelX",                                           /* function name */
442                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
443                NT_FP64,                                                        /* return value type */                 
444                {
445                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
446                        NT_FP64,                                                /* double precision x */
447                },
448/// Structure Factor Functions         
449                "HardSphereStructX",                                            /* function name */
450                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
451                NT_FP64,                                                        /* return value type */                 
452                {
453                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
454                        NT_FP64,                                                /* double precision x */
455                },
456               
457                "SquareWellStructX",                                            /* function name */
458                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
459                NT_FP64,                                                        /* return value type */                 
460                {
461                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
462                        NT_FP64,                                                /* double precision x */
463                },
464               
465                "StickyHS_StructX",                                             /* function name */
466                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
467                NT_FP64,                                                        /* return value type */                 
468                {
469                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
470                        NT_FP64,                                                /* double precision x */
471                },
472               
473                "HayterPenfoldMSAX",                                            /* function name */
474                F_UTIL | F_EXTERNAL,                                    /* function category == Utility */
475                NT_FP64,                                                        /* return value type */                 
476                {
477                        NT_FP64 + WAVE_TYPE,                    /* double precision wave (coefficient wave) */
478                        NT_FP64,                                                /* double precision x */
479                },
480               
481                "DiamCylX",                                             /* function name */
482                F_UTIL | F_EXTERNAL,                            /* function category */
483                NT_FP64,                                                        /* return value type */                 
484                {
485                        NT_FP64,                                                /* parameter types */
486                        NT_FP64,
487                },
488               
489                "DiamEllipX",                                           /* function name */
490                F_UTIL | F_EXTERNAL,                            /* function category */
491                NT_FP64,                                                        /* return value type */                 
492                {
493                        NT_FP64,                                                /* parameter types */
494                        NT_FP64,
495                },
496               
497/// Resolution smearing functions
498                "Smear_Model_20_X",
499                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
500                NT_FP64,                                                /* return value type */                 
501                {
502                        HSTRING_TYPE,
503                        NT_FP64,                                        /* double precision x */
504                        NT_FP64,                                        /* double precision x */
505                        NT_FP64,                                        /* double precision x */
506                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
507                        NT_FP64,                                        /* double precision x */
508                },
509               
510                "Smear_Model_76_X",
511                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
512                NT_FP64,                                                /* return value type */                 
513                {
514                        HSTRING_TYPE,
515                        NT_FP64,                                        /* double precision x */
516                        NT_FP64,                                        /* double precision x */
517                        NT_FP64,                                        /* double precision x */
518                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
519                        NT_FP64,                                        /* double precision x */
520                },
521               
522                "SmearedCyl_PolyRadiusX",
523                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
524                NT_FP64,                                                /* return value type */                 
525                {
526                        NT_FP64,                                        /* double precision x */
527                        NT_FP64,                                        /* double precision x */
528                        NT_FP64,                                        /* double precision x */
529                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
530                        NT_FP64,                                        /* double precision x */
531                },
532
533                "Cylinder_2D_Dist",
534                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
535                NT_FP64,                                                /* return value type */                 
536                {
537                        NT_FP64 + WAVE_TYPE,                            /* double precision wave (coefficient wave) */
538                        NT_FP64,                                        /* double precision x */
539                        NT_FP64,                                        /* double precision x */
540                },
541
542
543        }
544};
Note: See TracBrowser for help on using the repository browser.