1 /***********************************************************************/ 2 /* Open Visualization Data Explorer */ 3 /* (C) Copyright IBM Corp. 1989,1999 */ 4 /* ALL RIGHTS RESERVED */ 5 /* This code licensed under the */ 6 /* "IBM PUBLIC LICENSE - Open Visualization Data Explorer" */ 7 /***********************************************************************/ 8 /* 9 * $Header: /src/master/dx/src/exec/dxmods/stream.h,v 1.7 2001/04/17 15:39:19 gda Exp $: 10 */ 11 12 #ifndef _STREAM_H_ 13 #define _STREAM_H_ 14 15 #define DEFAULT_C 0.1 16 17 typedef struct instanceVars *InstanceVars; 18 typedef struct vectorPart *VectorPart; 19 typedef struct vectorGrp *VectorGrp; 20 typedef struct vectorField *VectorField; 21 22 struct instanceVars 23 { 24 VectorGrp currentVectorGrp; 25 Object currentPartition; 26 int isRegular; 27 }; 28 29 struct vectorPart 30 { 31 Field field; 32 int dependency; /* data dependency: pos or con */ 33 float min[3]; 34 float max[3]; 35 Array gArray; 36 unsigned short *ghosts; 37 }; 38 39 Error _dxfInitVectorPart(VectorPart, Field); 40 41 #define DEP_ON_POSITIONS 0x01 42 #define DEP_ON_CONNECTIONS 0x02 43 44 struct vectorField 45 { 46 VectorGrp current; 47 VectorGrp *members; 48 int nmembers; 49 int nDim; 50 }; 51 52 #define POINT_TYPE double 53 #define VECTOR_TYPE double 54 55 struct vectorGrp 56 { 57 InstanceVars (*NewInstanceVars)(VectorGrp); 58 Error (*FreeInstanceVars)(InstanceVars); 59 int (*FindElement)(InstanceVars, POINT_TYPE *); 60 int (*FindMultiGridContinuation)(InstanceVars, POINT_TYPE *); 61 Error (*Interpolate)(InstanceVars, POINT_TYPE *, VECTOR_TYPE *); 62 Error (*StepTime)(InstanceVars, double, VECTOR_TYPE *, double *); 63 Error (*FindBoundary)(InstanceVars, 64 POINT_TYPE *, VECTOR_TYPE *, double *); 65 int (*Neighbor)(InstanceVars, VECTOR_TYPE *); 66 Error (*CurlMap)(VectorGrp, MultiGrid); 67 int (*Weights)(InstanceVars, POINT_TYPE *); 68 int (*FaceWeights)(InstanceVars, POINT_TYPE *); 69 Error (*Delete)(VectorGrp); 70 Error (*Reset)(VectorGrp); 71 Error (*Walk)(InstanceVars, POINT_TYPE *, VECTOR_TYPE*, POINT_TYPE *); 72 int (*Ghost)(InstanceVars, POINT_TYPE *); 73 int (*ClampToBoundingBox)(InstanceVars, POINT_TYPE *); 74 75 int n, nDim, multigrid; 76 VectorPart *p; 77 }; 78 79 #define WALK_NOT_FOUND 0 80 #define WALK_EXIT 1 81 #define WALK_FOUND 2 82 #define WALK_ERROR 3 83 84 85 #define STREAM_BUF_POINTS 32 86 87 struct stream 88 { 89 float *points; 90 float *vectors; 91 float *time; 92 Array pArray; 93 Array vArray; 94 Array tArray; 95 int nDim; 96 int bufKnt, arrayKnt; 97 }; 98 99 100 typedef struct stream *Stream; 101 102 Error _dxfMinMaxBox(Field, float *, float *); 103 int _dxfIsInBox(VectorPart, POINT_TYPE *, int, int); 104 105 /* from _irregstream.c */ 106 VectorGrp _dxfIrreg_InitVectorGrp(Object, char *); 107 108 /* from _regstream.c */ 109 VectorGrp _dxfReg_InitVectorGrp(Object, char *); 110 111 112 #endif /* _STREAM_H_ */ 113