This file is indexed.

/usr/share/yorick/i0/cntrfunc.i is in yorick-gl 1.1+cvs20070922+dfsg-6.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
/*
 * $Id: cntrfunc.i,v 1.1.1.1 2005/09/18 22:07:59 dhmunro Exp $
 * This file connects yorick to the compiled functions in 
 * the OpenGL based 3D graphics package.
 */
/* Copyright (c) 2005, The Regents of the University of California.
 * All rights reserved.
 * This file is part of yorick (http://yorick.sourceforge.net).
 * Read the accompanying LICENSE file for details.
 */

if (!is_void(plug_in)) plug_in, "yorgl";

/* set default chunk size for iso-surface and slice plane
   generation */
CHKSIZ= [20,16,10];

extern MakeSliceTreeCrv;
/* xxDOCUMENT  MakeSliceTreeCrv(xyz, tree)
    Build an octree for use in extracting slicing planes from an ijk grid.
    tree holds the size of the overall grid, the size of the chunk to process
    on this call, and the point where the chunk starts within the larger array.
    array. xyz is the coordinates of the grid points.
    The octree is returned in tree.
*/
/* PROTOTYPE
   int ycMakeSliceTreeCrv(double array xyz, pointer tree)
*/

extern SliceTreeCrv;
/* xxDOCUMENT  SliceTreeCrv(point, normal, xyz, var, triangles, tree)
    Compute a slicing plane on an ijk grid using a pre-computed octree.
    tree holds the size of the overall grid, the size of the chunk to process
    on this call, and the point where the chunk starts within the larger array.
    array. xyz is the coordinates of the grid points.
    var is an optional point centered variable to be interpolated to
    the vertices on the slicing plane.
    point lies on the slicing plane and normal is perpendicular
    to the plane.
    triangles is a struct with space in which to return the result.
    Makes a triangle array.
*/
/* PROTOTYPE
   int ycSliceTreeCrv(double array point, double array normal, 
                     double array xyz, pointer var, pointer triangles, 
                     pointer tree)
*/

extern SliceTree;
/* xxDOCUMENT  SliceTree(maxdepth, sizes, chunk, start, point, normal, 
                       deltas, origin, var2, triangles)
    Compute a slicing plane on a regular grid using bisection to
    efficiently find the cells cut by the plane. The number of
    bisections is maxdepth.
    The full grid has dimensions sizes=[nx,ny,nz]. This call handles
    chunk vertices and the chunk starts at location start in
    the full grid. 
    deltas is the size of a zone and origin is the coordinate of the
    first point.
    point lies on the slicing plane and normal is perpendicular
    to the plane.
    var2 (if not null) is an auxiliary variable whose value is returned
    at each vertex of the slice plane.
    triangles is a struct with space in which to return the result.
    Makes a triangle array.
*/
/* PROTOTYPE
   int ycSliceTree(long maxdepth, long array sizes, long array chunk, long array start, 
                   double array point,  double array normal, 
                   double array deltas, double array origin, 
                   pointer var2, pointer triangles)
*/

extern MakeContourTree;
/* xxDOCUMENT  MakeContourTree(var, tree)
    Build an octree for use in extracting iso-surfaces from a regular grid.
    tree holds the size of the overall grid, the size of the chunk to process
    on this call, and the point where the chunk starts within the larger array.
    array. var has cell centered values.
    The octree is returned in tree.
*/
/* PROTOTYPE
   int ycMakeContourTree(double array var, pointer tree)
*/

extern ContourTree;
/* xxDOCUMENT  ContourTree(deltas, origin, level, var, triangles, tree)
    Compute an iso-surface at the specified level on a regular grid
    using a pre-computed octree.
    tree holds the size of the overall grid, the size of the chunk to process
    on this call, and the point where the chunk starts within the larger array.
    array. var has cell centered values.
    level is the contour level and var is the array to contour.
    triangles is a struct with space in which to return the result.
    Makes a triangle array.
*/
/* PROTOTYPE
   int ycContourTree(double array deltas, double array origin, double level, 
                     double array var, pointer triangles, pointer tree)
*/

extern ContourTree2;
/* xxDOCUMENT  ContourTree2(deltas, origin, level, var, var2, triangles, tree)
    Compute an iso-surface at the specified level on a regular grid
    using a pre-computed octree.
    var2 is interpolated to the vertices of the iso-surface.
    tree holds the size of the overall grid, the size of the chunk to process
    on this call, and the point where the chunk starts within the larger array.
    array. var has cell centered values.
    level is the contour level and var is the array to contour.
    triangles is a struct with space in which to return the result.
    Makes a triangle array.
*/
/* PROTOTYPE
   int ycContourTree2(double array deltas, double array origin, double level, 
                     double array var, pointer var2, pointer triangles, pointer tree)
*/

extern ContourTreeCrv;
/* xxDOCUMENT  ContourTreeCrv(level, xyz, var, triangles, tree)
    Compute an iso-surface at the specified level on an ijk grid
    using a pre-computed octree.
    tree holds the size of the overall grid, the size of the chunk to process
    on this call, and the point where the chunk starts within the larger array.
    array. var has cell centered values.
    level is the contour level and var is the array to contour.
    triangles is a struct with space in which to return the result.
    Makes a triangle array.
*/
/* PROTOTYPE
   int ycContourTreeCrv(double level, double array xyz, 
                     double array var, pointer triangles, pointer tree)
*/

extern ContourTreeCrv2;
/* xxDOCUMENT  ContourTreeCrv2(level, xyz, var, var2, triangles, tree)
    Compute an iso-surface at the specified level on an ijk grid
    using a pre-computed octree.
    var2 is interpolated to the vertices of the iso-surface.
    tree holds the size of the overall grid, the size of the chunk to process
    on this call, and the point where the chunk starts within the larger array.
    array. var has cell centered values.
    level is the contour level and var is the array to contour.
    triangles is a struct with space in which to return the result.
    Makes a triangle array.
*/
/* PROTOTYPE
   int ycContourTreeCrv2(double level, double array xyz, double array var, 
             pointer var2, pointer triangles, pointer tree)
*/


extern ContourInitCartPcen;
/* xxDOCUMENT  ContourInitCartPcen(sizes, offsets, deltas, origin, var, var2)
    Prepare to compute an iso-surface at the specified level on a regular grid.
    The grid does NOT include any guard cells.
    var has point centered values.
    var2 is an auxiliary point centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first real cell in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth are the numbers of cells in the i, j, and k 
    directions in the global grid.
*/
/* PROTOTYPE
   int ycInitCartPcen(long array sizes, long array offsets, 
        double array deltas, double array origin, double array var, pointer var2)
 */

extern ContourInitCartGrdPcen;
/* xxDOCUMENT  ContourInitCartGrdPcen(sizes, offsets, deltas, origin, var, var2)
    Prepare to compute an iso-surface at the specified level on a regular grid.
    var has point centered values.
    var2 is an auxiliary point centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first real cell in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth are the numbers of cells in the i, j, and k 
    directions in the global grid.
*/
/* PROTOTYPE
   int ycInitCartGrdPcen(long array sizes, long array offsets, 
        double array deltas, double array origin, double array var, pointer var2)
 */

extern ContourInitCartZcen;
/* xxDOCUMENT  ContourInitCartZcen(offsets, deltas, origin, var, var2)
    Prepare to compute an iso-surface at the specified level on a regular grid.
    var has zone centered values.
    var2 is an auxiliary zone centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first real cell in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguemnts are the numbers of cells in 
    the i, j, and k directions in the global grid.
*/
/* PROTOTYPE
   int ycInitCartZcen(long array sizes, long array offsets, 
        double array deltas, double array origin, double array var, pointer var2)
 */

extern ContourInitCartGrdZcen;
/* xxDOCUMENT  ContourInitCartGrdZcen(offsets, deltas, origin, var, var2)
    Prepare to compute an iso-surface at the specified level on a regular grid.
    var has zone centered values.
    var2 is an auxiliary zone centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first real cell in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguments are the numbers of cells in 
    the i, j, and k directions in the global grid.
*/
/* PROTOTYPE
   int ycInitCartGrdZcen(long array sizes, long array offsets, 
        double array deltas, double array origin, double array var, pointer var2)
 */

extern ContourInitCartGrdPcenNdx;
/* xxDOCUMENT  ContourInitCartGrdPcenNdx(sizes, offsets, deltas, origin, var, var2)
    Prepare to compute an iso-surface at the specified level on a regular grid.
    var has point centered values.
    var2 is an auxiliary point centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first real cell in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguments are the numbers of cells in 
    the i, j, and k directions in the global grid.
    The output triangles are specified by indices into vectors of coordinates, 
    gradients, and auxiliary variables.
*/
/* PROTOTYPE
   int ycInitCartGrdPcenNdx(long array sizes, long array offsets, 
        double array deltas, double array origin, double array var, pointer var2)
 */

extern ContourInitCartGrdZcenNdx;
/* xxDOCUMENT  ContourInitCartGrdZcenNdx(sizes, offsets, deltas, origin, var, var2)
    Prepare to compute an iso-surface at the specified level on a regular grid.
    var has zone centered values.
    var2 is an auxiliary zone centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first real cell in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguments are the numbers of cells in 
    the i, j, and k directions in the global grid.
    xyz is the grid.
    The output triangles are specified by indices into vectors of coordinates, 
    gradients, and auxiliary variables.
*/
/* PROTOTYPE
   int ycInitCartGrdZcenNdx(long array sizes, long array offsets, 
        double array deltas, double array origin, double array var, pointer var2)
 */

extern ContourInitCrvGrdPcen;
/* xxDOCUMENT  ContourInitCrvGrdPcen(sizes, offsets, xyz, var, var2)
    Prepare to compute an iso-surface at the specified level on a curvi-linear grid.
    var has point centered values.
    var2 is an auxiliary point centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first point in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguments are the numbers of cells in 
    the i, j, and k directions in the global grid.
    xyz is the grid.
*/
/* PROTOTYPE
   int ycInitCrvGrdPcen(long array sizes, long array offsets, 
        double array xyz, double array var, pointer var2)
 */

extern ContourInitCrvGrdZcen;
/* xxDOCUMENT  ContourInitCrvGrdZcen(sizes, offsets, xyzn, var, var2)
    Prepare to compute an iso-surface at the specified level on a curvi-linear grid.
    var has zone centered values.
    var2 is an auxiliary zone centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first point in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguments are the numbers of cells in 
    the i, j, and k directions in the global grid.
    xyz is the grid.
*/
/* PROTOTYPE
   int ycInitCrvGrdZcen(long array sizes, long array offsets, 
        double array xyz, double array var, pointer var2)
 */

extern ContourInitCrvGrdPcenNdx;
/* xxDOCUMENT  ContourInitCrvGrdPcenNdx(sizes, offsets, xyz, var, var2)
    Prepare to compute an iso-surface at the specified level on a curvi-linear grid.
    var has point centered values.
    var2 is an auxiliary point centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first point in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguments are the numbers of cells in 
    the i, j, and k directions in the global grid.
    xyz is the grid.
    The output triangles are specified by indices into vectors of coordinates, 
    gradients, and auxiliary variables.
*/
/* PROTOTYPE
   int ycInitCrvGrdPcenNdx(long array sizes, long array offsets, 
        double array xyz, double array var, pointer var2)
 */

extern ContourInitCrvGrdZcenNdx;
/* xxDOCUMENT  ContourInitCrvGrdZcenNdx(sizes, offsets, xyz, var, var2)
    Prepare to compute an iso-surface at the specified level on a curvi-linear grid.
    var has zone centered values.
    var2 is an auxiliary zone centered variable that is the same size as var.
    sizes is the size of the chunk to be processed including the ghost
    points on both sides.
    offsets has 5 elements. The first three are the i, j, and k of
    the first point in this chunk of the grid relative to the global grid.
    They are 1-based, so they must be adjusted before use in C.
    The fourth, fifth, and sixth arguments are the numbers of cells in 
    the i, j, and k directions in the global grid.
    xyz is the grid.
    The output triangles are specified by indices into vectors of coordinates, 
    gradients, and auxiliary variables.
*/
/* PROTOTYPE
   int ycInitCrvGrdZcenNdx(long array sizes, long array offsets, 
        double array xyz, double array var, pointer var2)
 */


extern ContourTetHex;
/* xxDOCUMENT  ContourTetHex(level, ifirst, nzone, xyz, grad, hexndx, var, var2, triangles)
    compute an iso-surface at the specified level on an arbitrarily connected 
    grid of hexahedra.
    xyz, grad, and var are coordinates, gradients, and variable values 
    at the points making up the grid.
    var2 is an optional auxiliary variable that is the same size as var.
    hexndx has 8 indices into xyz etc. for each hex making up the grid.
    level is the contour level.
    triangles is a struct with space in which to return the result.
*/
/* PROTOTYPE
   int ycContourTetHex(double level, long ifirst, long nzone, double array xyz, 
        double array grad, long array hexndx, 
        double array var, pointer var2, pointer triangles)
 */

extern ContourTreeVarr;
/* xxDOCUMENT  ContourTreeVarr(deltas, origin, level, var, 
               triangles, tree)
    compute an iso-surface at the specified level on a regular grid.
    level is the contour level and var is the array to contour.
    var has cell centered values.
    triangles is a struct with space in which to return the result.
    tree contains a pre-computed octtree to be used in computing
    the iso-surface. The tree structure holds several pieces of 
    information about the grid etc.
    A triangle is specified by 3 indices into a list of 
    the unique vertices on the iso-surface which is stored in triangles.
*/
/* PROTOTYPE
   int ycContourTreeVarr(double array deltas, double array origin, 
         double level, double array var, pointer triangles, 
         pointer tree, long array edgndx)
 */

extern ContourTreeVarr2;
/* xxDOCUMENT  ContourTreeVarr2(deltas, origin, level, var, var2,
               triangles, tree)
    compute an iso-surface at the specified level on a regular grid.
    level is the contour level and var is the array to contour.
    var has cell centered values.
    triangles is a struct with space in which to return the result.
    tree contains a pre-computed octtree to be used in computing
    the iso-surface. The tree structure holds several pieces of 
    information about the grid etc.
    A triangle is specified by 3 indices into a list of 
    the unique vertices on the iso-surface which is stored in triangles.
    var2 is a second variable that will be interpolated to the vertices
    of the iso-surface (if var2 is non-zero).
*/
/* PROTOTYPE
   int ycContourTreeVarr2(double array deltas, double array origin, 
         double level, double array var, pointer var2,
         pointer triangles, pointer tree, long array edgndx)
 */

extern ContourTetArray;
/* xxDOCUMENT  ContourTetArray(make_strip, sizes, level, var, var2, 
               xyz, grid, flag, triangles)
    Compute an iso-surface at the specified level for a chunk within the
	full grid.
	A initialization routine suitable for the grid type must be called
    before this function for every chunk to establish the "mapping"
    between the full grid and the chunk.
    sizes is the number of points in each coordinate direction for the
    chunk passed in this call. There is a ghost point at both ends of each
    direction (included in sizes).
    level is the contour level and var is the array to contour.
    triangles is a struct with space in which to return the result.
    var2 is a second variable that will be interpolated to the vertices
    of the iso-surface (if var2 is non-zero).
*/
/* PROTOTYPE
   int ycContourTet_array(long make_strip, long array sizes, double level, 
              double array var, double array var2, double array xyz, 
              double array grd, char array flag, pointer triangles)
 */

extern ContourTetArrayNdx;
/* xxDOCUMENT  ContourTetArrayNdx(make_strip, sizes, level, var, var2, 
               xyz, grid, flag, ndx, triangles)
    Compute an iso-surface at the specified level for a chunk within the
    full grid.
    A initialization routine suitable for the grid type must be called
    before this function for every chunk to establish the "mapping"
    between the full grid and the chunk.
    sizes is the number of points in each coordinate direction for the
    chunk passed in this call. There is a ghost point at both ends of each
    direction (included in sizes).
    level is the contour level and var is the array to contour.
    triangles is a struct with space in which to return the result.
    A triangle is specified by 3 indices in ndx. They point into a list of 
    the unique vertices on the iso-surface which is stored in triangles.
    var2 is a second variable that will be interpolated to the vertices
    of the iso-surface (if var2 is non-zero).
*/
/* PROTOTYPE
   int ycContourTet_array_ndx(long make_strip, long array sizes, double level, 
              double array var, double array var2, double array xyz, 
              double array grd, char array flag, long array ndx, pointer triangles)
 */

extern ContourTetZone;
/* xxDOCUMENT  ContourTetZone(level, var, t_strips)
    Compute an iso-surface for a single hexahedral zone at the specified level.
    The result is the set of hex edges cut in the form of a (possibly
    more than one) tri-strip. The result is in the form of an array of
    IsoTriStrip.
    var is a 2-by-2-by-2 set of function values.
    level is the contour level.
*/
/* PROTOTYPE
   int ycTetIso_one_zone(double level, double array var, pointer t_strip)
 */

extern PrepIsoTet;
/* xxDOCUMENT  PrepIsoTet()
    Prepare the case table for iso-surfaces generated using a 6 tet 
    decompostion of a hexahedral zone.
*/
/* PROTOTYPE
   int ycPrepIsoTet(void)
 */