source: sans/XOP_Dev/MonteCarlo/MonteCarlo.r @ 789

Last change on this file since 789 was 789, checked in by srkline, 12 years ago

Added XOP-ized functions for doing the distance-binned Debye Spheres calculation. Two versions are added, one that includes the SLDs and one that does not.

Also added a pseudo-random sequence generator, SobolX, that will generate pseudo-random 2D or 3D distributions. This fills space more uniformly than a random generation.

File size: 4.3 KB
Line 
1#include "XOPStandardHeaders.r"
2
3resource 'vers' (1) {                                           /* XOP version info */
4        0x01, 0x00, final, 0x00, 0,                             /* version bytes and country integer */
5        "1.00",
6        "1.00, © 1993 WaveMetrics, Inc., all rights reserved."
7};
8
9resource 'vers' (2) {                                           /* Igor version info */
10        0x05, 0x00, release, 0x00, 0,                   /* version bytes and country integer */
11        "5.00",
12        "(for Igor 5.00 or later)"
13};
14
15resource 'STR#' (1100) {                                        /* custom error messages */
16        {
17                /* [1] */
18                "SANSMonteCarlo requires Igor Pro 6.1 or later.",
19                /* [2] */
20                "Wave does not exist.",
21                /* [3] */
22                "This function requires a 3D wave.",
23        }
24};
25
26/* no menu item */
27
28resource 'XOPI' (1100) {
29        XOP_VERSION,                                                    // XOP protocol version.
30        DEV_SYS_CODE,                                                   // Development system information.
31        0,                                                                              // Obsolete - set to zero.
32        0,                                                                              // Obsolete - set to zero.
33        XOP_TOOLKIT_VERSION,                                    // XOP Toolkit version.
34};
35
36resource 'XOPF' (1100) {
37        {
38                "Monte_SANSX",          /* function name */
39                F_UTIL | F_THREADSAFE | F_EXTERNAL,                                     /* function category == UTILITY */
40                NT_FP64,                                                        /* return value type */                 
41                {
42                        NT_FP64 + WAVE_TYPE,
43                        NT_FP64 + WAVE_TYPE,
44                        NT_FP64 + WAVE_TYPE,
45                        NT_FP64 + WAVE_TYPE,
46                        NT_FP64 + WAVE_TYPE,
47                        NT_FP64 + WAVE_TYPE,
48                        NT_FP64 + WAVE_TYPE,
49                        NT_FP64 + WAVE_TYPE,
50                },
51                "Monte_SANSX2",         /* function name */
52                F_UTIL | F_THREADSAFE | F_EXTERNAL,                                     /* function category == UTILITY */
53                NT_FP64,                                                        /* return value type */                 
54                {
55                        NT_FP64 + WAVE_TYPE,
56                        NT_FP64 + WAVE_TYPE,
57                        NT_FP64 + WAVE_TYPE,
58                        NT_FP64 + WAVE_TYPE,
59                        NT_FP64 + WAVE_TYPE,
60                        NT_FP64 + WAVE_TYPE,
61                        NT_FP64 + WAVE_TYPE,
62                        NT_FP64 + WAVE_TYPE,
63                },
64               
65                "DebyeSpheresX",                                                /* function name */
66                F_UTIL | F_THREADSAFE | F_EXTERNAL,                             /* function category == Utility */
67                NT_FP64,                                                        /* return value type */ 
68                {
69                                                NT_FP64,                        /* single precision wave (q-wave) */
70                        NT_FP64 + WAVE_TYPE,                            /* single precision wave (x coordinates) */
71                        NT_FP64 + WAVE_TYPE,                            /* single precision wave (y coordinates) */
72                        NT_FP64 + WAVE_TYPE,                            /* single precision wave (z coordinates) */
73                        NT_FP64 + WAVE_TYPE,                            /* single precision wave (rho at xyz) */
74                        NT_FP64,                                // Rprimary, the primary sphere radius
75                        NT_FP64,                                // grid, should be passed as 0.62*Rprimary
76                },
77               
78                "Monte_SANSX3",         /* function name */
79                F_UTIL | F_THREADSAFE | F_EXTERNAL,                                     /* function category == UTILITY */
80                NT_FP64,                                                        /* return value type */                 
81                {
82                        NT_FP64 + WAVE_TYPE,
83                        NT_FP64 + WAVE_TYPE,
84                        NT_FP64 + WAVE_TYPE,
85                        NT_FP64 + WAVE_TYPE,
86                        NT_FP64 + WAVE_TYPE,
87                        NT_FP64 + WAVE_TYPE,
88                        NT_FP64 + WAVE_TYPE,
89                        NT_FP64 + WAVE_TYPE,
90                },
91               
92                "Monte_SANSX4",         /* function name */
93                F_UTIL | F_THREADSAFE | F_EXTERNAL,                                     /* function category == UTILITY */
94                NT_FP64,                                                        /* return value type */                 
95                {
96                        NT_FP64 + WAVE_TYPE,
97                        NT_FP64 + WAVE_TYPE,
98                        NT_FP64 + WAVE_TYPE,
99                        NT_FP64 + WAVE_TYPE,
100                        NT_FP64 + WAVE_TYPE,
101                        NT_FP64 + WAVE_TYPE,
102                        NT_FP64 + WAVE_TYPE,
103                        NT_FP64 + WAVE_TYPE,
104                },
105               
106                "maxDistanceX",         /* function name */
107                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
108                NT_FP64,                                                        /* return value type */                 
109                {
110                        NT_FP64 + WAVE_TYPE,
111                        NT_FP64 + WAVE_TYPE,
112                        NT_FP64 + WAVE_TYPE,
113                },
114               
115                "binDistanceX",         /* function name */
116                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
117                NT_FP64,                                                        /* return value type */                 
118                {
119                        NT_FP64 + WAVE_TYPE,                    // XYZ waves
120                        NT_FP64 + WAVE_TYPE,
121                        NT_FP64 + WAVE_TYPE,
122                        NT_FP64 + WAVE_TYPE,                    // distance Bin wave (this is returned)
123                        NT_FP64,                                                // grid
124                        NT_FP64,                                                // bin width
125                },
126               
127                "SobolX",               /* function name */
128                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
129                NT_FP64,                                                        /* return value type */                 
130                {
131                        NT_FP64,                                                // requested dimension (this is really an integer)
132                        NT_FP64 + WAVE_TYPE,                    // result wave
133                },
134               
135                "binSLDDistanceX",              /* function name */
136                F_UTIL | F_EXTERNAL,                                    /* function category == UTILITY */
137                NT_FP64,                                                        /* return value type */                 
138                {
139                        NT_FP64 + WAVE_TYPE,                    // XYZ waves
140                        NT_FP64 + WAVE_TYPE,
141                        NT_FP64 + WAVE_TYPE,
142                        NT_FP64 + WAVE_TYPE,                    // rho wave
143                        NT_FP64 + WAVE_TYPE,                    // distance Bin wave, 2D (this is returned)
144                        NT_FP64 + WAVE_TYPE,                    // SLD lookup
145                        NT_FP64 + WAVE_TYPE,                    // PSF id matrix
146                        NT_FP64,                                                // grid
147                        NT_FP64,                                                // bin width
148                },
149               
150        }
151};
Note: See TracBrowser for help on using the repository browser.